我看到我可以在迭代时附加到列表lst = [1]for i in lst: lst.append(i+1) print(i)我可以使用这种行为吗?还是气馁?我注意到不能说同样的setlst = set([1])for i in lst: lst.add(i+1) print(i)错误:大小在迭代过程中发生了变化。
3 回答

忽然笑
TA贡献1806条经验 获得超5个赞
允许在迭代时追加到列表中,因为列表是有序的,因此迭代期间追加的行为是可预测的。这对于在队列中的所有其他任务都完成后重试失败的任务非常有用,例如:
tasks = ['task1', 'task2']
for task in tasks:
if task == 'task1':
tasks.append('task1-retry')
print(task)
这输出:
task1
task2
task1-retry
但是集合是没有顺序的,因此在顺序迭代的同时将一个项目添加到一个集合中会产生不确定的效果,因此是不允许的。

偶然的你
TA贡献1841条经验 获得超3个赞
我认为它不会起作用,因为如果列表大小改变,那么(?)循环项目也应该改变,例如它可能会变成无限循环或内存访问冲突。最好这样做:
list=[1,2,7,5]
list2=[]
for i in list:
list2.append(i+1)
print(i)
list=list+list2
添加回答
举报
0/150
提交
取消