发电机如何组合发电机?

时间:2018-09-19 17:23:41

标签: python itertools

我想组合一个生成器的生成器,以便当我在所说生成器上调用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 :(得分:1)

您可以这样做

for (char letter: lowerCaseAlphabet) {
    if (argument == letter) 
        acceptArgument = true;          
}

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)