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					
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章