当前位置:   article > 正文

Python list的remove方法注意使用要点_python list.remove

python list.remove

Python中内置list的remove方法注意要点

list.remove(value) # 根据值来删除list中的元素
  • 1
nums = [1,2,3,4]
nums.remove(5)
  • 1
  • 2

运行错误
使用时候需要判断一下

if 5 in nums:
	nums.remove(5)
  • 1
  • 2
#删除所有指定的元素
nums = [(1,2),(2,3),(1,3),(1,4)]
for num in nums:
	if num[0] == 1:
		nums.remove(num)
  • 1
  • 2
  • 3
  • 4
  • 5

预期结果
[(2,3)]
实际运行结果
[(2,3),(1,4)]

原因如下:
当删除一项的时候,list会紧缩
nums 删除(1, 2)后
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)
				
  • 1
  • 2
  • 3
  • 4
  • 5

可以使用

for i in range(len(nums)):
	num = nums[i]
	if nums[0] == 1:
		nums.remove(num)
		i -= 1
  • 1
  • 2
  • 3
  • 4
  • 5

或者,只有不删除的时候i+1

i = 0
while i < len(nums):
	num = nums[i]
	if num[0] == 1:
		nums.remove(num)
	else:
		i+=1	
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/weixin_40725706/article/detail/110783
推荐阅读
相关标签
  

闽ICP备14008679号