python3 leetcode 刷题常用api
1. 基础类型与操作
x = int('10')
y = float('3.14')
divmod(a, b)
pow(a, b, mod)
abs(x)
round(x, ndigits)
max(iterable, key=func)
min(iterable, key=func)
sum(iterable, start=0)
all(iterable)
any(iterable)
ord('A')
chr(65)
2. 列表(list)完整API
lst = []
lst = [0]*n
lst = list(range(10))
lst = [expr for x in iterable]
lst = [expr for x in iterable if cond]
lst.append(x)
lst.extend(iterable)
lst.insert(i, x)
lst.pop()
lst.pop(i)
lst.remove(x)
lst.clear()
del lst[i]
del lst[i:j]
lst.index(x, start, end)
lst.count(x)
lst.sort(key=None, reverse=False)
sorted(lst, key, reverse)
lst.reverse()
reversed(lst)
lst2 = lst.copy()
lst2 = lst[:]
import copy; copy.deepcopy(lst)
len(lst)
any(lst) / all(lst)
max(lst)/min(lst)
3. 元组(tuple)与命名元组
t = (1,2,3)
t = 1,2,3
t = (1,)
x, y = (1,2)
from collections import namedtuple
Point = namedtuple('Point', ['x','y'])
p = Point(10,20)
p.x, p.y
4. 字典(dict)完整API
d = {}
d = dict(a=1,b=2)
d = {k:v for k,v in iterable}
d[key]
d.get(key, default)
d.setdefault(key, default)
d.keys()
d.values()
d.items()
d[key] = value
d.update(other_dict)
del d[key]
d.pop(key, default)
d.popitem()
len(d)
key in d
d.clear()
d.copy()
d = {**d1, **d2}
5. 集合(set)完整API
s = set()
s = {1,2,3}
s = set([1,2,3])
s.add(x)
s.remove(x)
s.discard(x)
s.pop()
s.clear()
s1.union(s2)
s1.intersection(s2)
s1.difference(s2)
s1.symmetric_difference(s2)
s1.issubset(s2)
s1.issuperset(s2)
s1.isdisjoint(s2)
len(s)
x in s
6. 字符串(str)全部常用方法
s = "hello"
s.upper() / s.lower() / s.swapcase() / s.capitalize() / s.title()
s.isdigit() / s.isalpha() / s.isalnum() / s.islower() / s.isupper() / s.isspace()
s.find(sub, start, end)
s.rfind(sub)
s.index(sub)
s.count(sub)
s.startswith(prefix) / s.endswith(suffix)
s.replace(old, new, count)
s.split(sep=None, maxsplit=-1)
s.rsplit()
s.splitlines()
s.partition(sep)
s.strip(chars) / s.lstrip() / s.rstrip()
s.center(width, fillchar)
s.ljust(width), s.rjust(width)
s.zfill(width)
sep.join(iterable)
f"value = {x}"
"{} {}".format(a,b)
len(s)
s[::-1]
s * n
7. 数学模块(math)和内置
import math
math.inf, math.nan
math.pi, math.e
math.ceil(x) / math.floor(x) / math.trunc(x)
math.sqrt(x)
math.pow(x,y)
math.exp(x) / math.log(x)
math.log10(x)
math.gcd(a,b) / math.lcm(a,b) (3.9+)
math.factorial(n)
math.comb(n,k) / math.perm(n,k)
math.isclose(a,b,rel_tol,abs_tol)
abs(x), pow(x,y,mod), round(x), divmod(a,b)
8. 迭代器与生成器
range(start, stop, step)
enumerate(iterable, start=0)
zip(*iterables)
zip_longest(*iter, fillvalue=None)
map(func, *iterables)
filter(func, iterable)
from functools import reduce
reduce(func, iterable, initial)
gen = (x**2 for x in range(10))
def gen():
yield value
yield from iterable
9. 排序与顺序统计
sorted(iterable, key=None, reverse=False)
list.sort(key=None, reverse=False)
import heapq
heapq.nlargest(k, iterable, key=None)
heapq.nsmallest(k, iterable, key=None)
max(iterable, key=func)
min(iterable, key=func)
10. 堆(heapq)完整
import heapq
heap = []
heapq.heappush(heap, item)
heapq.heappop(heap)
heapq.heappushpop(heap, item)
heapq.heapreplace(heap, item)
heapq.heapify(lst)
heap[0]
heapq.heappush(heap, -x)
max_val = -heapq.heappop(heap)
11. 双端队列(deque)
from collections import deque
dq = deque(iterable, maxlen)
dq.append(x)
dq.appendleft(x)
dq.pop()
dq.popleft()
dq.extend(iterable)
dq.extendleft(iterable)
dq.rotate(n)
dq.remove(value)
dq.count(x)
dq.clear()
len(dq)
12. 计数器(Counter)
from collections import Counter
cnt = Counter(iterable)
cnt = Counter({1:3, 2:5})
cnt.most_common(k)
cnt.total()
cnt.elements()
cnt.subtract(iterable)
cnt += cnt2
cnt -= cnt2
cnt & cnt2
cnt | cnt2
13. 默认字典(defaultdict)
from collections import defaultdict
dd = defaultdict(int)
dd = defaultdict(list)
dd = defaultdict(set)
dd = defaultdict(lambda: "N/A")
dd[key]
14. 有序字典(OrderedDict,Python3.7+普通dict已有序,但有些方法仍有用)
from collections import OrderedDict
od = OrderedDict()
od.move_to_end(key, last=True)
od.popitem(last=True)
15. 链式映射(ChainMap)
from collections import ChainMap
cm = ChainMap(d1, d2, d3)
cm.maps
cm.new_child(d)
cm.parents
16. 队列(queue,线程安全,刷题较少用,但提及)
from queue import Queue
q = Queue(maxsize=0)
q.put(item)
item = q.get()
q.empty(), q.full()
17. 栈(使用list模拟)
stack = []
stack.append(x)
x = stack.pop()
top = stack[-1]
18. 位运算
&
|
^
~
<<
>>
n.bit_length()
int.bit_count()
bin(n)
format(n, 'b')
19. itertools 模块(高频)
import itertools
itertools.count(start=0, step=1)
itertools.cycle(iterable)
itertools.repeat(object, times)
itertools.product(*iterables, repeat=1)
itertools.permutations(iterable, r)
itertools.combinations(iterable, r)
itertools.combinations_with_replacement(iterable, r)
itertools.zip_longest(*iterables, fillvalue=None)
itertools.accumulate(iterable, func=operator.add)
itertools.chain(*iterables)
itertools.chain.from_iterable(iterable_of_iterables)
itertools.groupby(iterable, key=None)
itertools.islice(iterable, start, stop, step)
20. functools 模块
from functools import lru_cache, reduce, partial, cmp_to_key
@lru_cache(maxsize=None)
def fib(n):
return n if n<2 else fib(n-1)+fib(n-2)
reduce(func, iterable, initial)
partial(func, *args, **kwargs)
def cmp(a, b): return a - b
sorted(lst, key=cmp_to_key(cmp))
21. 二分查找(bisect)
import bisect
arr = [1,2,3,3,5]
bisect.bisect_left(arr, x)
bisect.bisect_right(arr, x)
bisect.insort_left(arr, x)
bisect.insort_right(arr, x)
22. 随机数(random)
import random
random.random()
random.randint(a,b)
random.choice(seq)
random.choices(population, weights=None, k=1)
random.sample(population, k)
random.shuffle(lst)
random.seed(42)
23. 输入输出(力扣中通常不需要,但有时调试)
import sys
data = sys.stdin.read().strip().split()
for line in sys.stdin:
sys.stdout.write(str(x) + "\n")
print(*objects, sep=' ', end='\n', file=sys.stdout)
print(f"{value:.2f}")
print("{0:04d}".format(42))
24. 系统相关
import sys
sys.setrecursionlimit(1000000)
sys.getrecursionlimit()
sys.maxsize
sys.version
25. 高阶函数与lambda
lambda x, y: x+y
map(lambda x: x*2, [1,2,3])
filter(lambda x: x>0, [-1,2,-3])
sorted(lst, key=lambda x: x[1])
max(d.items(), key=lambda kv: kv[1])
min(lst, key=lambda x: abs(x))
26. 类型转换与进制
int(x, base=10)
float(x)
str(x)
list(iterable)
tuple(iterable)
set(iterable)
dict(iterable_of_pairs)
bin(x)
oct(x)
hex(x)
ord(ch) / chr(num)
bytes(string, encoding)
bytearray(iterable)
27. 字符串与列表互转
list("hello")
"".join(['a','b'])
", ".join(["a","b"])
s.split() / s.split(',')
28. 异常处理(刷题少用,但可防御)
try:
risky()
except ValueError as e:
print(e)
except KeyError:
pass
else:
finally:
29. 海象运算符(Python3.8+)
if (n := len(lst)) > 10:
print(f"List too long ({n})")
while (ch := input()) != 'quit':
print(ch)
[(x, y) for x in range(5) if (y := x**2) > 5]
30. 解包(Unpacking)
a, b = 1, 2
a, *rest = [1,2,3,4]
*head, tail = [1,2,3,4]
def f(a,b,c): pass
args = (1,2,3); f(*args)
kwargs = {'a':1,'b':2,'c':3}; f(**kwargs)
d = {**d1, **d2}
31. 常用常量与特殊值
float('inf'), float('-inf')
math.inf, -math.inf
float('nan')
True, False, None
Ellipsis
__name__
32. 正则表达式(re)偶尔用于字符串模式匹配
import re
re.match(pattern, string)
re.search(pattern, string)
re.findall(pattern, string)
re.finditer(pattern, string)
re.sub(pattern, repl, string)
re.split(pattern, string)
r'\d+'
r'\w+'
r'[a-z]'
33. 日期时间(datetime,偶尔处理时间戳)
from datetime import datetime, timedelta
now = datetime.now()
dt = datetime(2025,1,1)
delta = timedelta(days=1)
dt + delta
dt.strftime("%Y-%m-%d")
datetime.strptime("2025-01-01", "%Y-%m-%d")
34. 内存视图与字节操作(位运算相关)
memoryview(bytes_object)
int.from_bytes(b'abc', 'big')
(12345).to_bytes(2, 'big')
35. 一些内置函数的补充
id(obj)
hash(obj)
isinstance(obj, type)
issubclass(cls, parent)
type(obj)
callable(obj)
globals(), locals()
eval("1+2")
exec("print(3)")
36. 常见技巧汇总
a, b = b, a
reversed_seq = seq[::-1]
reversed_list = list(reversed(seq))
for i, v in enumerate(lst, start=1):
pass
for a,b in zip(lst1, lst2):
pass
flat = [item for sublist in nested for item in sublist]
s == s[::-1]
freq = {}
for x in lst:
freq[x] = freq.get(x, 0) + 1
transposed = list(zip(*matrix))
def chunk(lst, size):
for i in range(0, len(lst), size):
yield lst[i:i+size]
def pow_mod(a, b, mod):
res = 1
while b:
if b & 1: res = res * a % mod
a = a * a % mod
b >>= 1
return res