我正在写一段代码,这是我面临的情景。
如何更新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中的列表?
提前致谢。
答案 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
作为变量名,有一个带有该名称的内置函数。