例如类似的东西(尽管它不起作用):
list1 = ['hello, how are you?', 'well, who are you', 'what do you want']
desiredwords = ['hello', 'well']
list2 = [x for x in list1 if any(word in list1 for word in desiredwords) in x]
print list2
['hello, how are you?', 'well, who are you'] #Desired output
任何人都知道怎么做?
答案 0 :(得分:2)
您在错误的生成器表达式上调用any
。你想要:
list2 = [x for x in list1 if any(word in x for word in desiredwords)]
这里的区别在于,在您的问题中,您要评估所需单词列表中的任何单词是否为list1
的成员(他们不是),然后测试{是否{ {1}}(False
来电的输出)位于您正在测试的any
元素中。这当然不起作用。
我的list
版本会根据所考虑的元素检查所需单词列表中的单词,使用any
的输出来过滤列表。
请注意,any
对字符串进行子字符串匹配 - 这种方法将计算" oilwell"作为匹配"井"。如果你想要这种行为,那很好。如果没有,就会变得更难。