为什么chain.from_iterable不会遍历int列表?

时间:2018-06-03 06:10:06

标签: python python-3.x itertools

为什么chain.from_iterable给出错误,如果赋予它的参数是sus(7),这是一个整数列表,而是当[sus(7)]传递给它时它完全正常。

import itertools as p

def sus(n):

    a = []
    for i in range(n):
        a.append(i)
    return a

print(sus(7))

for i in p.chain(sus(7)):
    print('a1',i)
for i in p.chain.from_iterable(sus(7)):
    print('a2',i)

1 个答案:

答案 0 :(得分:0)

如果你看一下chain.from_iterable的来源:

def from_iterable(iterables):
# chain.from_iterable(['ABC', 'DEF']) --> A B C D E F
    for it in iterables:
        for element in it:
            yield element

您可以看到它期望迭代的可迭代(例如列表)。如果你有一个字符串列表,这可以正常工作。但是,如果您的列表元素无法迭代,并且适用于任何数值(如int),则会抛出您所获得的错误。