這個問題在這里已經有了答案: 迭代時如何從串列中洗掉專案? (25 個回答) 昨天關門。
我得到了一個名為 的整數串列nums,并試圖洗掉所有出現的值 ( val)。我正在嘗試查看val與索引匹配的位置,nums并嘗試將其從串列中洗掉。但是,我不斷收到“串列索引超出范圍”錯誤。我猜這是因為當我彈出numsmatch的元素時val,它會縮小串列,使其超出范圍。不可能以這種方式洗掉所有出現的值嗎?
nums = [3,2,2,3]
val = 2
for i in range(len(nums)):
if val == nums[i]:
nums.pop(i)
print(nums)
uj5u.com熱心網友回復:
您不應該在迭代串列時嘗試從串列中洗掉元素,因為記憶體在您訪問它時會發生變化。
相反,您應該創建一個新串列:
nums = [3,2,2,3]
val = 2
print([num for num in nums if val != num]) # Prints [3, 3]
uj5u.com熱心網友回復:
使用remove方法從串列中洗掉 vlaues
nums = [3,2,2,3]
val = 2
l = list(nums)#creating new list
for v in l:
if v == val:
nums.remove(val)#removing values
print(nums)
輸出:
$ python3 file.py
[3, 3]
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/424732.html
下一篇:我需要檢查不同div中的匹配項
