为什么python reduce()与`None`元素的行为不同?

rds*_*rds 2 python functional-programming

我不明白类似问题的答案.

很明显,这应该回归 True

l = [1,1,1]
reduce(lambda x,y: x== y, l)
Run Code Online (Sandbox Code Playgroud)

但是,你怎么解释这个retuns False(如果None==NoneTrue)

l = [None,None,None]
reduce(lambda x,y: x== y, l)
Run Code Online (Sandbox Code Playgroud)

Fel*_*ing 8

因为

1 == True # 1 == (1 == 1)
Run Code Online (Sandbox Code Playgroud)

True,但是

None == True # None == (None == None)
Run Code Online (Sandbox Code Playgroud)

False(并且None == False也是False如此,所以一旦你得到False,它就会停留False).

这是reduce有效的:它将每个元素和先前评估的结果传递给回调.并且通过它将一系列值减少到一个值.