2014-12-31 25 views
4

我想檢查每個列表中是否存在值。測試是否存在多個列表中的值

如預期的那樣返回True,但似乎是非pythonic。

什麼是正確/更優雅的方式來做到這一點?

a = [1 ,2] 
b = [1, 3] 
c = [1, 4] 
d = [2, 5] 

False in [True if 1 in l else False for l in [a, b, c, d] ] 

回答

11

您可以使用allgenerator expression

all(1 in x for x in (a, b, c, d)) 

演示:

>>> a = [1 ,2] 
>>> b = [1, 3] 
>>> c = [1, 4] 
>>> d = [2, 5] 
>>> all(1 in x for x in (a, b, c, d)) 
False 
>>> all(1 in x for x in (a, b, c)) 
True 
>>> 

除了是更具可讀性,該解決方案更有效,因爲它使用懶評價。它只會檢查儘可能多的項目以確定結果。

而且,從來就沒有一個很好的理由這樣做:

True if 1 in l else False 

或因爲in類似的東西已經返回boolean結果。所有你需要的是:

1 in l 

對於否定版本,使用方法:

1 not in l 
相關問題