Python list的remove方法注意使用要點

list.remove(value) # 根據值來刪除list中的元素
nums = [1,2,3,4]
nums.remove(5)  運行錯誤

 使用時候需要判斷一下
if 5 in nums:
	nums.remove(5)

#刪除所有指定的元素
nums = [(1,2),(2,3),(1,3),(1,4)]
for num in nums:
	if num[0] == 1:
		nums.remove(num)
預期結果
[(2,3)]
實際運行結果
[(2,3),(1,4)]

# 原因
當刪除一項的時候,list會緊縮
nums 刪除(12)後
nums = [(2,3),(1,3),(1,4)]
下一次num的值爲(1,3) 跳過了(2,3)
同理,當刪除完(1,3) 跳過了(1,4)導致沒有遍歷到

以上代碼相當於,每次回到for循環,i+1,但是nums發生了變化
for i in range(len(nums)):
	num = nums[i]
	if num[0] == 1:
		nums.remove(num)

可以使用
for i in range(len(nums)):
	num = nums[i]
	if nums[0] == 1:
		nums.remove(num)
		i -= 1
或者,只有不刪除的時候i+1
i = 0
while i < len(nums):
	num = nums[i]
	if num[0] == 1:
		nums.remove(num)
	else:
		i+=1					
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章