почему chain.from_iterable не выполняет итерацию по списку int? - PullRequest
0 голосов
/ 03 июня 2018

почему 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 голосов
/ 03 июня 2018

Если вы посмотрите на источник 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, оно выдаст ошибку, которую вы получили.

...