python - 在遍历列表时附加到列表是否正确?

标签 python loops for-loop

我看到我可以在遍历列表时附加到列表

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)

Error: size changed during iteration.

最佳答案

允许在迭代列表时附加到列表,因为列表是有序的,因此在迭代期间附加的行为是可预测的。这对于在队列中的所有其他任务都已完成时重试失败的任务非常有用,例如:

tasks = ['task1', 'task2']
for task in tasks:
    if task == 'task1':
        tasks.append('task1-retry')
    print(task)

这个输出:

task1
task2
task1-retry

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

关于python - 在遍历列表时附加到列表是否正确?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52852143/

相关文章:

python - Django/makemigrations ModuleNotFoundError : No module named 'idmp_core.apps.IdmpCoreConfigdjango' ; 错误

python - 按列表中项目的数字之和对数字列表进行排序

python - 为什么 numpy.spacing(0) 给我一个不可能的数字?

c - feof() 和 fscanf() 在将字节 1b 作为字符扫描后停止工作。是因为ascii是 'ESC'吗?我能做些什么?

java - thymeleaf :each loop with nested div returns wrong object

vb.net - 如何在长文本中查找所有出现的特定字符串

c - 二维数组中的意外输出

python - 使用 for 循环写入 csv

python - 如何使用 python 更改嵌套作用域中的全局变量?

javascript - 我可以在循环中更改索引吗?