为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

慕的地8271018 2021-07-05 12:08:07
我看到我可以在迭代时附加到列表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

但是集合是没有顺序的,因此在顺序迭代的同时将一个项目添加到一个集合中会产生不确定的效果,因此是不允许的。


查看完整回答
反对 回复 2021-07-21
?
偶然的你

TA贡献1841条经验 获得超3个赞

我认为它不会起作用,因为如果列表大小改变,那么(?)循环项目也应该改变,例如它可能会变成无限循环或内存访问冲突。最好这样做:


list=[1,2,7,5]

list2=[]

for i in list:

  list2.append(i+1)

  print(i)

list=list+list2


查看完整回答
反对 回复 2021-07-21
  • 3 回答
  • 0 关注
  • 187 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号