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

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 删除(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)
				

可以使用

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	
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值