繁体   English   中英

列表理解:为什么连词不起作用? [复制]

[英]List comprehension: why does a conjunction not work? [duplicate]

假设如下:

>>>b = ['a/b', 'a b']
>>>[x for x in b if '/' in x]
['a/b']
>>>[x for x in b if ' ' in x]
['a b']
>>>[x for x in b if '/' and ' ' in x]
['a b']

我的期望是[x for x in b if '/' and ' ' in x]不应返回任何内容或最多返回一个空列表。 那么为什么[x for x in b if '/' and ' ' in x]返回['a b']呢?

如果您仔细检查您的最后一个列表理解:

[x for x in b if '/' and ' ' in x]

你会看到你有两个逻辑条件。 一个是字符串文字'/' ,另一个是' ' in x 第一个条件默认为真,所以这里唯一真正的标准是字符串必须有一个空格。 'a b'满足这个条件。 这是您打算做的事情:

b = ['a/b', 'a b']
output = [x for x in b if '/' in x and ' ' in x]
print(output)  # []

现在所有输入都失败了,因为没有一个同时具有空格和正斜杠。

python中, if '/' and ' ' in x你必须这样做if '/' in x and ' ' in x 这就是我假设你希望'/'和''都在字符串x中。

下面是一个例子

b = ['a/b', 'a b']
print([x for x in b if '/' in x and ' ' in x]) // output: []
b = ['a/b', 'a b',"a /b"]
print([x for x in b if '/' in x and ' ' in x])  // output: ['a /b']

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM