python删除列表中的某个值的全部元素
1、首先我们先演示一下Python列表的remove的效果:代码如下
d=[1,2,3,4,5,1,1]
d.remove(1)
print(d)
可以看到的,这里删除1,只删除了下标最小的那个元素

2、实现方法1:先将列表转换为set,以此来去掉重复元素,然后转换为list,再排序sorted一下(排序的原因是转换为set之后,元素的顺序不一定还是原来的顺序)
代码入下:
#删除列表中更某个值得所有元素,可以利用python中set的元素唯一性,先将entry转换为set再删除
entry=["1","1","2"]
entry=list(set(entry))
entry.remove("1")
print(entry)
print(list(set(entry)))
#print(list(set(entry)).sort())
print(sorted(list(set(entry))))

3、第二种方式:利用for循环遍历找到要删除的元素,然后删除它(但是要注意的,遍历的时候应该从后往前遍历,否则会出现列表越界,因为删除元素之后,列表的最大下标也变了)
下面演示错误的方法:(代码复制到这过来缩进会变,记得修改)
c=[1,2,4,1,1,2]
for i in range(len(c)):
if c[i]==1:
c.remove(1)
print(c)

4、然后下面给出第二种方法的正确代码:
c=[1,2,4,1,1,2]
for i in range(len(c)-1,-1,-1):
if c[i]==1:
c.remove(1)
print(c)

5、第三种方法,使用列表解析式的方法实现,代码如下:
entry=["1","1","2"]
entry=[entry[i] for i in range(0,len(entry)) if entry[i]!="1"]
print(entry)
代码解析
for i in range(0,len(entry)) 循环遍历
if entry[i]!="1"循环遍历中判断
entry[i]代表对取出来的原列表相关值操作
最后返回一个新列表

6、第四种方式:利用filter和lambda表达式,代码如下:
arr=[1,1,3]
print(list(filter(lambda x:x!=1,arr)))
