展平可迭代的迭代

时间:2013-05-01 03:18:41

标签: python python-3.x

如何编写应该返回嵌套在iterable中的每个值的function

这是我想要完成的一个例子:

for i in function([1, 2, [3, 4, (5, 6, 7), 8, 9], 10]):
    print(i, end=' ')

预期产出:

1 2 3 4 5 6 7 8 9 10

2 个答案:

答案 0 :(得分:13)

Python 2用户有一个内置的任务:

from compiler.ast import flatten

不幸的是,它已在python 3中删除了。你可以自己滚动:

from collections import Iterable

def flatten(collection):
    for x in collection:
        if isinstance(x, Iterable) and not isinstance(x, str):
            yield from flatten(x)
        else:
            yield x

答案 1 :(得分:6)

带有奇怪限制的家庭作业问题需要有趣的答案

import re
def function(L):
    return re.findall("[a-z0-9]+", repr(L))