Как совместить генератор генераторов? - PullRequest
0 голосов
/ 19 сентября 2018

Я хочу объединить генератор генераторов, чтобы при вызове list () для указанного генератора я получал список всех элементов генераторов, а не список генераторов.Например, в настоящее время я делаю:

list(itertools.chain((i for i in range(j)) for j in range(3)))

, который возвращает:

[<generator object <genexpr>.<genexpr> at 0x7fc48921e200>,
<generator object <genexpr>.<genexpr> at 0x7fc48921eeb8>,
<generator object <genexpr>.<genexpr> at 0x7fc48921e7d8>]

Но я хочу, чтобы он возвращал что-то вроде:

[0, 0, 1, 0, 1, 2]

1 Ответ

0 голосов
/ 19 сентября 2018

Вы можете сделать так,

list(itertools.chain.from_iterable((i for i in range(j+1)) for j in range(3)))
# [0, 0, 1, 0, 1, 2]

range(j) не даст желаемого результата.Вы должны использовать range(j+1)

Вы можете сделать это без использования итератора.

In [58]: list(i for j in range(3) for i in range(j+1))
Out[58]: [0, 0, 1, 0, 1, 2]
...