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] ]
我想檢查每個列表中是否存在值。測試是否存在多個列表中的值
如預期的那樣返回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] ]
您可以使用all
和generator 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