在迭代列表时附加到列表是否正确?

我看到我可以在迭代时附加到列表


lst = [1]

for i in lst:

    lst.append(i+1)

    print(i)

我可以使用这种行为吗?还是气馁?我注意到不能说同样的set


lst = set([1])

for i in lst:

    lst.add(i+1)

    print(i)

错误:大小在迭代过程中发生了变化。


慕的地8271018
浏览 188回答 3
3回答

忽然笑

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

偶然的你

我认为它不会起作用,因为如果列表大小改变,那么(?)循环项目也应该改变,例如它可能会变成无限循环或内存访问冲突。最好这样做:list=[1,2,7,5]list2=[]for i in list:  list2.append(i+1)  print(i)list=list+list2
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python