Operator
Negating Boolean
if not C:
if C<1:
if~-C:
And operator
if a and b:
if a*b:
if i==4 and j==4:
if i==4and j==4:
if(i,j)==(4,4):
if i==j==4:
Increment or decrement 1 in statement
c/(n-1)
c/~-n
c/(n+1)
c/-~n
while n-1:
while~-n:
or n+1
or-~n
While n!=1
while n!=1:
while n-1:
while~-n:
shorter than the list selection
[0,y][b] -> y*b
[1,y][b] -> y**b
[x,1][b] -> b or x
[x,x+1][b] -> x+b
[x,x-1][b] -> x-b
[1,-1][b] -> 1|-b
[x,~x][b] -> x^-b
Ceil and Floor
math.floor(n)
n//1
math.ceil(n)
-(-n//1)
Types
Check type of a variable
x*0is 0 # integer
x*0=="" # string
x*0==[] # array
Convert integer to string
str(n)
`n`
Join list of string or integer
L=['a', 'b', 'c']
''.join(L)
`L`[2::5]
L=[1, 2, 3]
`L`[1::3]
2 String same length or 1 length diff
'ftarlusee'[C::2]
List all substrings
# with repeat
f=lambda s:[*s]and[s]+f(s[1:])+f(s[:-1])
# avoid repeat
f=lambda s:{*s}and{s}|f(s[1:])|f(s[:-1])
Iterable & Iterator
List of range
L=list(range(10))
*L,=range(10)
Get last and first element from a list
e=L[-1]
*_,e=L
e=(L)[0]
e,*_=L
Append and Extend to list
L.append(e)
L+=e,
L.extend(e)
L+=e
For in range
for i in range(x):pass
# if x less than 4
for x in 0,1,2:pass
# if don't use i
for _ in[0]*x:pass
# for use twice
r=0,
for _ in r*x:pass
for _ in r*-~x:pass
# use exec with multiply string
exec'pass;'*x
Multiple numerical loops
for i in range(m):
for j in range(n):
do_stuff(i,j)
for k in range(m*n):
do_stuff(k/n,k%n)
# Three loop
for i in range(m):
for j in range(n):
for l in range(o):
do_stuff(i,j,l)
for k in range(m*n*b):
do_stuff(k/n/o,k%(n*o)/o,k%o)
Check element in iterable
if e in S
if{e}&S
Reverse List
L.reverse()
L[::-1]
Check negative integer in a list
min(L)<0
'-'in`L`
Checking the length of a list
a==[] # a is empty
[]==a # for [] in the front and reduce 1 space
a # a is not empty
a>a[:i] # len(a) < i
Copy/Clone a list
a=x[:]
b=[*x]
c=x*1
Multiple if statements in comprehensions
[a for a in 'abc'if cond1()and cond2()or cond3()and cond4()and cond5()]
[a for a in 'abc'if cond1()if cond2()or cond3()if cond4()if cond5()]
Split into chunks
l=(n for n in range(18))
zip(*[l]*4)
Unpack generator
set(G)
{*G}
list(G)
[*G]
*L,=G
tuple(G)
(*G,)
T=*G,
Others
Reading from stdin
import os;A=os.read(0,9**9)
import os;A=os.read(0,99) # input is always less than 100 bytes.
Multiline input to list
list(sys.stdin.readlines())
eof='' # End of line you want to stop
list(iter(input,eof))
Import when use once
import itertools
itertools.groupby()
__import__("itertools").groupby()
Reference
FEATURED TAGS
Artificial Intelligence Programming Python Code golf C++ aria2 Network OpenWRT Router Embedded Gatsby React GraphQL Progressive Web App TypeScript Frontend Facebook Developer ESLint Hosting Website Web Performance Database PostgreSQL Performance Backend Web Development Git Security Kubernetes Google Cloud Platform
ON THIS PAGE