如果项目未包含在列表中,则Python列表理解

时间:2014-10-09 11:18:00

标签: python list list-comprehension

我有一个字符串列表,我想找到不包含给定字母的字符串。我可以使用列表理解轻松找到与给定单词匹配的项目。我无法扭转此过程。

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)]

但这并没有给出我正在寻找的输出。 我对任何建议都非常感激。

2 个答案:

答案 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]

希望这有助于人们不确定是否需要

编辑: 你也可以做一个不是任何()