检查列表python中的字符串

时间:2012-10-31 21:53:31

标签: python python-2.7

让我说我有

a = "FIFA 13"
然后我写了

"bla" and "13" in a

结果是真的......为什么? bla 不在

4 个答案:

答案 0 :(得分:8)

您的布尔表达式被评估为("bla") and ("13" in a),非空字符串计算为true,因此如果"13" in a为真,则整个表达式将评估为true。

相反,请使用all()

all(x in a for x in ("bla", "13"))

或者只是单独检查:

"bla" in a and "13" in a

答案 1 :(得分:3)

你应该使用

In [1]: a = "FIFA 13"

In [2]: "bla" in a and "13" in a
Out[2]: False

答案 2 :(得分:2)

"bla" true

"13" in a true

因此,"bla" and "13" in a true

您想写的内容可能是:("bla" in a) and ("13" in a)

答案 3 :(得分:2)

您的代码不会被解读为:

("bla") and ("13" in a)

"bla"是真实的,因此会自动评估为True"13" in a可能是TrueFalse and True评估为True,因此未真正考虑"bla"

你必须更明确一点:

'bla' in a and '13' in a

或者你可以使用不可读的单行:

all(map(a.__contains__, ('bla', '13')))

对于短线单线,我认为您必须使用itertools.imap代替map ..