Python 2.7:使用reduce验证列表中的元素

Python 2.7: Using reduce to verify that elements are in a list

在试验 reduce 函数时,我观察到我无法向自己解释的行为。 比如说,有 2 个列表:

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

我想验证列表 b 中的所有元素是否都在列表 [=23= 中]a 使用 reduce。所以,我尝试:

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

并得到 False 而不是预期的 True

那么,为什么我会得到 False

P.S.: 我知道还有其他方法可以验证所有列表的元素是否在另一个列表中,f.i。使用集合和 issuperset。我只是想知道为什么 reduce 函数会这样工作。

您的代码:

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)