2015-12-06 83 views
0

在試驗reduce函數時,我觀察到我無法向自己解釋的行爲。 說,還有2所列出:Python 2.7:使用reduce來驗證元素是否在列表中

a = ["a", "b", "c", "z"] 
b = ["b", "z", "a"] 

我woud要驗證的列表b的所有元素是否在使用減少列表一個。所以,我嘗試:

reduce(lambda x,y: (x in a) and (y in a), b) 

,並得到,而不是預期的

那麼,爲什麼我會得到錯誤

P.S .:我知道還有其他方法可以驗證所有列表的元素是否在另一個列表f.i中。使用套件和發行人編號。我只是想知道爲什麼reduce函數可以這樣工作。

回答

0

您的代碼:

b = ["b", "z", "a"] 
reduce(lambda x,y: (x in a) and (y in a), b) 

等同於:

(("b" in a) and ("z" in a)) in a and ("a" in a) 

,它計算到:

(True in a) and ("a" in a) 
+0

哦,現在我明白了我的錯誤,非常感謝! – Atsvetk

相關問題