python中迭代问题

mac2022-06-30  74

迭代list的时候不能修改这个list,否则,可能会出错。

numbers=[1,0,3,5,0] numbers.sort() print(numbers) print('*************') for i in numbers: print(i) if (i<5): #如果i是5,则弹出 numbers.pop(0) else: break print(numbers)

输出为:

[0, 0, 1, 3, 5] ************* 0 [0, 1, 3, 5] 1 [1, 3, 5] 5

原因是,我们的numbers在弹出后改变了,而i却在每一次迭代中位置下移,所以我们输出的内容会有变化。

修改:

numbers=[1,0,3,5,0] numbers.sort() result=numbers#复制到result中 print(numbers) print('*************') for i in numbers: print(i) if (i<5): #如果i是5,则弹出 result.pop(0) else: break print(numbers)

输出:

[0, 0, 1, 3, 5] ************* 0 [0, 1, 3, 5] 1 [1, 3, 5] 5

依然出错,因为我们虽然复制了一个,实际上,那是引用而已。

再次修改:

numbers=[1,0,3,5,0] numbers.sort() result=[i for i in numbers]#复制到result中 print(numbers) print('*************') for i in numbers: print(i) if (i<5): #如果i是5,则弹出 result.pop(0) else: break print(numbers)

输出:

[0, 0, 1, 3, 5] ************* 0 [0, 0, 1, 3, 5] 0 [0, 0, 1, 3, 5] 1 [0, 0, 1, 3, 5] 3 [0, 0, 1, 3, 5] 5

这样就没有问题了。

转载于:https://www.cnblogs.com/shixisheng/p/7390618.html

相关资源:JAVA上百实例源码以及开源项目
最新回复(0)