我有一个字符串列表,我想找到不包含给定字母的字符串。我可以使用列表理解轻松找到与给定单词匹配的项目。我无法扭转此过程。
import sys
userin = sys.argv[1]
word = userin.lower()
cars = ['mercedes', 'bmw', 'ford', 'renault']
result = []
check = set(word)
result = [c for c in cars if any(l in check for l in c)]
print result
我认为这可以通过以下方式反转:
result = [c for c in cars if not(l in check for l in c)]
但这并没有给出我正在寻找的输出。 我对任何建议都非常感激。
答案 0 :(得分:2)
我认为not
没有按照你的想法做到。您实际确定的内容如下:
not(generator expression)
与...相反:
bool(generator expression)
生成器的布尔值总是简单地为“True”,因为它是非None
python对象,默认情况下它们是真实的,除非应用某些特殊逻辑(例如空容器,等于{{1或者是0
对象)。因此,您的代码部分只是无条件地返回False
。
你的意思是:
False
但在这种情况下,使用result = [c for c in cars if not any(l in check for l in c)]
方法可以更好地提供 :
set
答案 1 :(得分:0)
要反转我想只使用年龄为if(__)== False
result = [c for c in cars if not(l in check for l in c)]
到这个
result = [c for c in cars if any(l in check for l in c) == False]
希望这有助于人们不确定是否需要
编辑: 你也可以做一个不是任何()