马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 永恒的蓝色梦想 于 2020-4-11 15:30 编辑
Python 实现 flatten()
语法
参数
描述
flatten 函数可以用来压平可迭代对象。
返回值
这个函数会返回一个生成器。
实现方式
递归
原理
如果 iterable 中的一个元素实现了 __iter__ 方法,则递归取它的值。
例子>>> [1,[2,[3,[4,[5,[6,[7]]]]]]]
[1, [2, [3, [4, [5, [6, [7]]]]]]]
>>> list(flatten(_))
[1, 2, 3, 4, 5, 6, 7]
>>> def gen1():
yield 1
yield 2
yield 3
>>> def gen2():
yield 4
yield gen1()
>>> def gen3():
yield 5
yield 6
yield gen2()
>>> def gen4():
yield 7
yield gen3()
>>> list(gen4())
[7, <generator object gen3 at 0x000001EF0093B5F0>]
>>> list(flatten(gen4()))
[7, 5, 6, 4, 1, 2, 3]
代码def flatten(it, /):
for i in it:
if hasattr(i,'__iter__'):
yield from flatten(i)
else:
yield i
|