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 : []
添加回答
舉報