Python:动态更新for-condition中的列表

时间:2014-08-19 03:53:25

标签: python for-loop

我正在写一段代码,这是我面临的情景。

如何更新for-condition中的列表,并在下一次迭代中更新for-condition中的列表?

Eg.,
    list = [0,1,2]

    for i in list:
        print list[i]
        if list[i] == 0:
            list.append(3)

条目“3”应该在for-condition的列表中更新。

是否可以动态更新for-condition中的列表?

提前致谢。

2 个答案:

答案 0 :(得分:3)

是的,如果你这样做,它会起作用。但是,它通常不是一个好主意,因为它可以在迭代和循环体动作之间创建令人困惑的交互。在您的示例中,您在末尾添加了一个元素,但是,例如,如果您更改中间的元素,则可能会或可能不会看到更改,具体取决于发生时列表中的位置。 (例如,您可以更改已经迭代过的元素的值。)

此外,您不应将变量命名为list,因为它会影响名为list的内置类型。

答案 1 :(得分:3)

请注意您的循环不正确,在Python的这个代码段中:

for e in lst:

...迭代e中的每个元素lst,而e 一个索引,它是一个元素 - 所以问题中的所有部分都在哪里您写的list[i]不正确,应该只是i。请尝试使用此解决方案,它等效且不易出错:

lst = [0, 1, 2]
print(lst)
lst += [3] * lst.count(0) # add as many 3s at the end as there are 0s in the list

请注意,在遍历列表的同时修改列表绝不是一个好主意。另外,不要使用list作为变量名,有一个带有该名称的内置函数。