方法一:使用列表的index方法获取对应的元素索引,然后进行删除,因为remove删除方法只能删除元素出现的第一个的值,所以这里使用pop函数
nums2 = [1,2,3,4,5,6,7,8,9,2,2,2,2,2]
print(nums2)
for i in nums2.copy():
if nums2[nums2.index(i)] == 2:
nums2.pop(nums2.index(i))
print(nums2)
这里删除完发现并不对
原值:[1, 2, 3, 4, 5, 6, 7, 8, 9, 2, 2, 2, 2, 2] 删除后:[1, 3, 4, 5, 6, 7, 8, 9, 2, 2]
这是为什么呢?
这是因为删除过程中你的元素变少了,索引下标也变了,所以for循环处理时,因为列表元素变更,长短也发生了变化,因此再处理的时候通过nums2.index(i) 再拿值的时候就拿不到对应的值了,那怎么处理呢,很简单,让你的循环列表保持不变就可以,可以copy一份,也可以重新定义一个变量列表,这里我们使用copy函数实现
nums2 = [1,2,3,4,5,6,7,8,9,2,2,2,2,2]
for i in nums2.copy():
if nums2[nums2.index(i)] == 2:
nums2.pop(nums2.index(i))
print(nums2)
结果:[1, 3, 4, 5, 6, 7, 8, 9]
方法二:使用列表推导式
print([x for x in nums2 if nums2.count(x) == 1])
结果:[1, 3, 4, 5, 6, 7, 8, 9]