Python3:如何删除列表项与另一个列表项

时间:2018-06-14 00:44:54

标签: python-3.x for-loop if-statement list-comprehension

我有两个清单:

     a = ['eggs', 'eggs', 'spam', 'ham', 'eggs']

     b = ['e', 'e']

我希望能够从列表a中删除鸡蛋。 根据列表中的e。 所以我理想的输出是:

     a = ['spam', 'ham', 'eggs']

由于列表a中只有2个。

我试过了:

     [a.remove('eggs') for e in b if e =='e' for eggs in a if eggs=='eggs']

问题是这个列表理解删除了所有的蛋。 告诉我pythonic方式!

2 个答案:

答案 0 :(得分:2)

a = ['eggs', 'eggs', 'spam', 'ham', 'eggs']
b = ['e', 'e']

for e in b:
    if e == "e":
        a.remove("eggs")

print(a)

这不是一行,但应该有效。

答案 1 :(得分:0)

您不应在列表理解中使用lst.remove。由于此方法会改变您的列表并返回None,因此您对输出不感兴趣,而应使用for循环。

您可以使用lst.count查找第二个列表中'e'的出现次数,然后在第二个列表中使用lst.remove

a = ['eggs', 'eggs', 'spam', 'ham', 'eggs']
b = ['e', 'e']

for _ in range(b.count('e')):
    a.remove('eggs')

print(a) # ['spam', 'ham', 'eggs']