Python reference

math

math.log(8, 2)  # 以2为底的对数
math.log2(8)  # 以2为底的对数
math.log10(100)  # 以10为底的对数
math.factorial(3)  # 阶乘
math.comb(5, 3)  # 组合数
math.gcd(21, 14)  # 最大公约数
math.lcm(21, 14)  # 最小公倍数

str

s.isalpha()  # 是否只包含字母
s.isdigit()  # 是否只包含数字
s.isalnum()  # 是否只包含字母和数字
s.islower()  # 是否只包含小写字母
s.isupper()  # 是否只包含大写字母
s.upper()  # 大写
s.lower()  # 小写
ord('A')  # 65
chr(65)  # 'A'
s.strip()  # 去除两端空格
s.split(' ')  # 分割
s.join(['hello', 'world'])  # 连接
s.startswith('hello')  # 是否以 'hello' 开头
s.endswith('world')  # 是否以 'world' 结尾
s.find('world')  # 查找第一次出现的位置,找不到返回 -1
s.replace('world', 'python')  # 替换
s.count('l')  # 统计

list

a.append(6)  # 插入
a.pop()  # 弹出
a.sort()  # 排序
a.sort(reverse=True)  # 逆序排序
sorted(a)  # 返回排序后的列表
sorted(a, reverse=True)  # 返回逆序排序后的列表
sorted(a, key=lambda x: x[1])  # 按元素的第二个值排序
sorted(a, key=lambda x: x[1], reverse=True)  # 按元素的第二个值逆序排序
max(a)  # 最大值
min(a)  # 最小值
max(a, key=lambda x: x[1])  # 按元素的第二个值取最大值
min(a, key=lambda x: x[1])  # 按元素的第二个值取最小值
sum(a)  # 求和
any(a)  # 是否有元素为真
all(a)  # 是否所有元素为真

set

s = set()
s.add(1)  # 插入
s.discard(1)  # 删除
1 in s  # 查找
s1 & s2  # 交集
s1 | s2  # 并集
s1 - s2  # 差集
s1 ^ s2  # 对称差集

dict, from collections import defaultdict, Counter

d = {}
d = defaultdict(int)  # 创建一个默认值为 0 的字典
d = defaultdict(lambda: 1)  # 创建一个默认值为 1 的字典
# 基本类型的默认值:int=0 float=0.0 bool=False str='' list=[] tuple=() dict={} set=set()
d = Counter(a)  # 计数器
d['a'] = 1  # 插入/更新
del d['a']  # 删除
d.items()  # 返回所有键值对

from sortedcontainers import SortedList, SortedDict, SortedSet

docs

from collections import deque

q = deque()
q.append(6)  # 在右端插入
q.appendleft(0)  # 在左端插入
q.pop()  # 弹出右端元素
q.popleft()  # 弹出左端元素

heapq

heapq.heapify(a)  # 将 a 转换为最小堆
a[0]  # 最小值
heapq.heappop(a)  # 弹出最小值
heapq.heappush(a, 1)  # 插入元素

bisect

bisect.bisect_left(a, 42)  # 查找第一个 >= 42 的位置
bisect.bisect_right(a, 42)  # 查找第一个 > 42 的位置
bisect.insort(a, 42)  # 插入 42 到合适的位置

itertools

itertools.permutations(a)  # 生成 a 的全排列
itertools.permutations(a, 3)  # 生成 a 的排列,长度为3
itertools.combinations(a, 3)  # 生成 a 的组合,长度为3
itertools.accumulate(a)  # 生成 a 的累加和
itertools.accumulate(a, operator.mul)  # 生成 a 的累乘积
itertools.accumulate(a, max) # 生成 a 的前缀最大值

random

random.random()  # [0, 1) 之间的随机数
random.randint(1, 10)  # [1, 10] 之间的随机数
random.choice([1, 2, 3, 4])  # 从列表中随机选择
random.shuffle([1, 2, 3, 4])  # 将列表随机打乱
random.sample([1, 2, 3, 4], 2)  # 从列表中随机选择两个元素
random.seed(42)  # 设置随机种子