我试图弄清楚当它们与另一个列表(测试)中的项目匹配时删除列表项目(水果)的最佳方法是什么。
fruits = ["apple", "banana", "cherry", "kiwi", "mango"]
test = ["nana", "erry"]
newList = ["apple", "banana", "cherry", "kiwi", "mango"]
for x in test:
for y in fruits:
if x in y:
newList.remove(y)
print(newList)
newList 的输出符合预期:['apple', 'kiwi', 'mango']
如果我尝试通过列表理解来解决此问题,则项目将被删除,但列表会在 for 循环中打印两次。
fruitsNew = [y for x in test for y in fruits if x not in y]
print(fruitsNew)
fruitsNew 的输出是:['apple', 'cherry', 'kiwi', 'mango', 'apple', 'banana', 'kiwi', 'mango']
在第一次迭代中,匹配“nana”的项目被删除,在第二次迭代中,匹配“erry”的单词被删除。有没有办法在删除匹配项目的同时只打印一次列表?或者这个问题的列表理解不适用?
问候