我有两个清单:
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方式!
答案 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']