永恒的蓝色梦想 发表于 2020-4-2 17:28:38

Python 实现 flatten()

本帖最后由 永恒的蓝色梦想 于 2020-4-11 15:30 编辑

Python 实现 flatten()

语法flatten(iterable, /)

参数

参数描述
iterable可迭代对象


描述
flatten 函数可以用来压平可迭代对象。

返回值
这个函数会返回一个生成器。

实现方式
递归

原理
如果 iterable 中的一个元素实现了 __iter__ 方法,则递归取它的值。

例子>>> ]]]]]]
]]]]]]
>>> list(flatten(_))
>>> 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())

>>> list(flatten(gen4()))


代码def flatten(it, /):
    for i in it:
      if hasattr(i,'__iter__'):
            yield from flatten(i)
      
      else:
            yield i

永恒的蓝色梦想 发表于 2020-4-2 17:30:52

二楼{:10_327:}
页: [1]
查看完整版本: Python 实现 flatten()