使用列表推导式删除列表中的元素 - Python
我有一个这样的列表:
['A','B','C']
我需要根据我在函数中得到的输入来删除一个元素。例如,如果我决定删除A,那么它应该返回:
['B','C']
我尝试过,但没有成功。
list = ['A','B','C']
[var for var in list if list[var] != 'A']
我该怎么做呢?谢谢!
7 个回答
0
你可以直接使用列表的 remove
方法。只需要写 list.remove('A')
,这样就可以把'A'这个元素删掉了。
如果你知道要删除的元素在列表中的位置(也就是索引),可以用 pop
方法。比如 list.pop(0)
就是删除列表中第一个元素。
1
originalList=['A','B','C']
print([val for val in originalList if val!='A'])
这段代码会输出
['B', 'C']
1
如果你不确定这个元素是否存在,删除之前可以先检查一下:
if 'A' in lst:
lst.remove('A')
13
你代码的改进(其实差不多正确)可以这样做:
list = ['A','B','C']
[var for var in list if var != 'A']
不过,@frostnational 的方法对于单个值来说是 更好 的。
如果你想要有一个不允许的值的列表,可以这样做:
list = ['A','B','C', 'D']
not_allowed = ['A', 'B']
[var for var in list if var not in not_allowed]
31
简单的 lst.remove('A')
就可以工作:
>>> lst = ['A','B','C']
>>> lst.remove('A')
['B', 'C']
不过,调用一次 .remove
只会删除列表中第一个出现的 'A'
。如果你想删除所有的 'A'
,可以使用一个循环:
for x in range(lst.count('A')):
lst.remove('A')
如果你坚持要用列表推导式,可以这样做:
>>> [x for x in lst if x != 'A']
['B', 'C']
这样做会删除所有等于 'A'
的元素。