赞
踩
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
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。