生成器嵌入列表中

时间:2017-11-29 14:11:02

标签: python list constructor

我的代码

yValues = [3, 6, 12]
retVal = []
for num in range(2):
    retVal.append((num),(Y for Y in range( math.ceil(yValues[num]-yVaules[num-1]) )) )

我希望返回的是列表

retVal[(0, 3), (0, 4), (0, 5), (0, 6), (1, 6), (1, 7), (1, 8), (1, 9), (1, 10), (1, 11), (1, 12)]

我一段时间没与建筑师合作过,因为我现在只是

retVal[(0, constructorFunction at ...), (1, constructorFunction at ...)]

1 个答案:

答案 0 :(得分:1)

使用extend而不是append来扩展包含发生器中所有元素的列表,而不是附加生成器本身。 (还有一些小问题。)

yValues = [3, 6, 12]
retVal = []
for num in range(1, len(yValues)):
    retVal.extend((num,Y) for Y in range(math.ceil(yValues[num]-yValues[num-1])))
print(retVal)

您的range0转到2(不包括),因此您将0-1(最后一个)元素进行了比较。相反,您可能希望从1循环到len(yValues)(再次,排他)并进行比较。

编辑:如果您希望内部循环包含下一个索引的值,请在range的上限中添加一个(请记住:上限是独占)。

range(math.ceil(yValues[num]-yValues[num-1]) + 1)