具有空列表平均值的三元运算符评估顺序

Ternary operator evaluation order with mean of empty list

>>> from numpy import mean
>>> mylist = []
>>> mean(mylist) if mylist is not [] else None
nan

我认为测试应该首先在三元运算符中进行评估。我预计 None。为什么我得到的是 nan

编辑: 为什么空列表不会与 [] 完全相同?

测试

mylist is not []

不检查 mylist 是否为空。它检查它是否与另一个空列表相同。

你应该只使用:

mean(mylist) if mylist else None