[英]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.