
140
|
第
9
章
... if isinstance(item, list):
... for subitem in flatten(item):
... yield subitem
... else:
... yield item
...
>>> lol = [1, 2, [3,4,5], [6,[7,8,9], []]]
>>> flatten(lol)
<generator object flatten at 0x10509a750>
>>> list(flatten(lol))
[1, 2, 3, 4, 5, 6, 7, 8, 9]
Python 3.3
加入了
yield from
表达式,此表达式可以让一个生成器把部分工作交给另一个
生成器。可以用此来简化
flatten()
。
>>> def flatten(lol):
... for item in lol:
... if isinstance(item, list):
... yield from flatten(item)
... else:
... yield item
...
>>> lol = [1, 2, [3,4,5], [6,[7,8,9], []]]
>>> list(flatten(lol))
[1, 2, 3, 4, 5, 6, 7, 8, 9]
9.13
异步函数
Python 3.5
加入了关键字
async
和
await
,用于定义和运行
异步函数
。二者具有以下特点:
•
相对较新;
•
差异颇大,很难理解;
•