[英]Check for strings inside list python
可以说我有
a = "FIFA 13"
然后我写
"bla" and "13" in a
结果是正确的...为什么? bla不在
您的布尔表达式被评估为("bla") and ("13" in a)
,非空字符串的评估结果为true,因此,如果a中的"13" in a
为true,则整个表达式的评估结果为true。
相反,使用all()
:
all(x in a for x in ("bla", "13"))
或者只是分别检查两者:
"bla" in a and "13" in a
你应该用
In [1]: a = "FIFA 13"
In [2]: "bla" in a and "13" in a
Out[2]: False
"bla"
是真的
"13" in a
为真
因此,a中的"bla" and "13" in a
为真
您想要写的可能是: ("bla" in a) and ("13" in a)
您的代码不会像读取时那样被解释:
("bla") and ("13" in a)
"bla"
是真实的,因此它将自动评估为True
。 "13" in a
可能为True
。 False and True
计算结果为True
,因此未真正考虑"bla"
。
您必须更加明确:
'bla' in a and '13' in a
或者,您可以使用不可读的单线:
all(map(a.__contains__, ('bla', '13')))
对于单线短路,我认为您必须使用itertools.imap
而不是map
..
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.