使用列表推导式删除列表中的元素 - Python

22 投票
7 回答
38947 浏览
提问于 2025-04-18 05:39

我有一个这样的列表:

['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' 的元素。

撰写回答