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)
在试验 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)