python snippets

(2 mins to read)

无穷大

1
2
3
4
5
6
7
float('inf')
float('-inf')
math.inf
-math.inf
float('inf') == math.inf # True
type(float('inf')) == float
type(math.inf) == float

map

1
mp = {'(':0, '{':1, '[':2}

自定义比较

1
2
3
4
5
6
7
8
lst.sort(lambda x: 10 * x)

def cmp(i, j):
if a[i] < a[j]: return -1
elif a[i] > a[j]: return 1
else: return 0
lst.sort(functools.cmp_to_key(cmp))
# list.sort()和sorted都保证是stable的

for i, x in enumerate(lst):

多维列表

lst * n会创建n个浅拷贝的列表,所以应该使用列表推导

1
[[0] * n for _ in range(n)]

Counter

字典的子类,提供可哈希对象的计数功能。

1
2
3
4
5
6
7
from collections import Counter
c = Counter([1, 2, 3, 2]) # Counter({2: 2, 1: 1, 3: 1})
c1 + c2
c1 - c2
c1 & c2
c1 | c2
c.most_common(n) # 返回出现次数前n多的元素列表