2 回答

TA贡献1794条经验 获得超8个赞
迭代时不能更改可迭代对象的长度。如果要打印最小项并删除它直到列表为空,则应在列表为空的条件下循环,如下所示:
sum=[1,2,3,4,5,6,7]
while sum:
print(min(sum))
sum.remove(min(sum))
输出:
1
2
3
4
5
6
7
改变可迭代长度的问题在于python的解释器基本上会根据列表上的前一个位置尝试获取下一个元素。
例如,如果您循环使用:
[a,b,c,d]
第一个项目将是a(上的项目index 0)。for 循环的下一次迭代将尝试检索项目,index 1但如果您删除a,那么 ìindex1将不再存在b,因为您当前的列表将如下所示;
[b,c,d]
而index 1现在c,跳绳对neext迭代所有其他项目

TA贡献1982条经验 获得超2个赞
如果要清除整个列表,请使用内置函数clear()。下面是如何做到这一点的示例。
lis=[1,2,3,4,5,6,7,8,9]
print('printing original list',lis,sep=' : ')
# output printing original list : [1, 2, 3, 4, 5, 6, 7, 8, 9]
lis.clear()
print('printing new cleared list',lis,sep=' : ')
# output printing new cleared list : []
添加回答
举报