具有空列表平均值的三元运算符评估顺序
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
>>> 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