2014-03-26 45 views
3

我想用類似的語法如下:最簡單的方法來檢查列表中是否有多個項目(或不)?

if a in b 

,但我要檢查多個項目,所以我需要財產以後這樣的:

if ('d' or 'g' or 'u') in a 

,但我知道這並不工作。

,所以我就是這麼做的:

for i in a: 
    for j in ['d','g','u']: 
     if i==j 

和它的工作, 但我不知道是否有一個更簡單的方法。

+0

它應該返回true如果__all__元素在列表中或只是它們的一個子集? –

+0

或者如果**任何元素都在列表中? – roippi

+1

檢查:[** any **](http://docs.python.org/2.7/library/functions.html#any)和[** all **](http://docs.python.org/ 2.7/library/functions.html#all)。 – Manhattan

回答

6

anyall可用於檢查多個布爾表達式。

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

print(all(i in a for i in b)) # Checks if all items are in the list 
print(any(i in a for i in b)) # Checks if any item is in the list 
2

使用any加上發電機:

if any(x in d for x in [a, b, c]): 

或者檢查是否有交集:

if {a, b, c} & set(d): 
+0

所以這個表達式(x in d for x in [a,b,c])是一個生成器,它將d中的x與[a,b,c]中的x進行比較,反之亦然? – pyni

相關問題