使用list comprehension删除列表中的元素 - Python

时间:2014-05-07 11:11:10

标签: python list-comprehension

我有一个这样的清单:

['A','B','C']

我需要的是根据函数中的输入删除一个元素。例如,如果我决定删除A,它应该返回:

['B','C']

我尝试没有成功

list = ['A','B','C']
[var for var in list if list[var] != 'A']

我该怎么办? 感谢

7 个答案:

答案 0 :(得分:11)

简单lst.remove('A')将起作用:

>>> lst = ['A','B','C']
>>> lst.remove('A')
['B', 'C']

但是,对.remove的一次调用只会删除列表中{em} {<1>}的次。要删除所有'A'值,您可以使用循环:

'A'

如果您坚持使用列表理解,可以使用

for x in range(lst.count('A')):
    lst.remove('A')

上述内容将删除等于>>> [x for x in lst if x != 'A'] ['B', 'C'] 的所有元素。

答案 1 :(得分:5)

对代码的改进(几乎是正确的)将是:

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]

答案 2 :(得分:1)

您可以使用列表的remove方法。只需list.remove('A')即可删除。

如果您要删除项目的索引,请使用pop方法。 list.pop(0)

答案 3 :(得分:0)

如果您不确定该元素是否存在,您可能需要在删除之前进行检查:

if 'A' in lst:
    lst.remove('A')

答案 4 :(得分:0)

找到此简化代码:

list1 = [12,24,35,24,88,120,155]

while 24 in list1:

    list1.remove(24)

print(list1)

祝你好运!

答案 5 :(得分:0)

您真的很亲密:

---------------------------------------------------------------------
| FirstName  |Amount|   PostalCode   |   LastName  |  AccountNumber |
---------------------------------------------------------------------
| John       | 100  |   112334       |   Smith     |  123456        |
---------------------------------------------------------------------

您尝试使用要求索引值的语法来引用列表项。

答案 6 :(得分:0)

originalList=['A','B','C']
print([val for val in originalList if val!='A'])

这个打印

['B', 'C']