我们可以使用以下代码来优雅地实现对多级列表的完全展开,依次读取不同层级列表的各个数值:
关键知识点是yield from这句话,表示再次进入到生成器deep_flatten中。
def deep_flatten(lst):
for i in lst:
if type(i) == list:
yield from deep_flatten(i)
else:
yield i
gen = deep_flatten([1,['s',3],4,5])
for i in gen:
print(i)
输出的结果如下所示
1
s
3
4
5
[Finished in 1.2s]