把多个生成过程接起来:yield from

作用说明 yield from 可以把一段数据生成过程直接交给另一个可迭代对象。 def gen(): yield from [1, 2] yield from [3, 4] print(list(gen())) 小练习

开始练习 →

自己定义遍历规则:迭代器协议

作用说明 迭代器协议可以让一个对象按照你设定的顺序被依次取出内容。 class Count: def __init__(self, n): self.n = n self.i = 0 def

开始练习 →

进入和离开时自动处理:上下文管理器

作用说明 上下文管理器适合处理“进入时做什么、离开时做什么”的场景。 class Demo: def __enter__(self): return "start" def __exit

开始练习 →

提前固定一部分参数:functools.partial

作用说明 functools.partial 可以先固定函数的一部分参数,得到一个更顺手的新函数。 from functools import partial base2_int = partial(int, base=2) print(

开始练习 →

自动记住算过的结果:lru_cache

作用说明 lru_cache 可以把函数算过的结果先记住,下次再用时直接拿出来。 from functools import lru_cache @lru_cache(None) def fib(n): if n < 2:

开始练习 →

字典没有值时自动准备:defaultdict

作用说明 defaultdict 可以在键还不存在时,自动帮你准备一个默认值。 from collections import defaultdict d = defaultdict(list) d["a"].appe

开始练习 →

高效两端操作:deque

作用说明 deque 适合在序列两端进行高效操作。 from collections import deque d = deque([1, 2, 3]) d.rotate(1) print(list(d)) 小练习 程序运行后,会输出什

开始练习 →

只截取一小段:itertools.islice

作用说明 itertools.islice 可以从一个可迭代对象中截取你想要的一小段。 from itertools import islice print(list(islice(range(10), 2, 5))) 小练习 程序运行

开始练习 →

一次拆出中间一段:星号解包

作用说明 星号解包适合在拆分序列时,一次接住中间一整段内容。 a, *b, c = [1, 2, 3, 4, 5] print(b) 小练习 程序运行后,会输出什么? 提交要求:只提交最终输出结果,不要添加多余说明。

开始练习 →

按自定义标准排序:lambda key

作用说明 lambda 配合 key 可以让排序按你指定的标准来进行。 words = ["apple", "pear", "banana"] print(sorted(words

开始练习 →