用yield关键词实现列表的完全展开

我们可以使用以下代码来优雅地实现对多级列表的完全展开,依次读取不同层级列表的各个数值:
关键知识点是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]
发布了207 篇原创文章 · 获赞 16 · 访问量 9887

猜你喜欢

转载自blog.csdn.net/weixin_41855010/article/details/104636733