我需要以下功能:
输入:alist
输出:
True
如果输入列表中的所有元素使用标准相等运算符求值彼此相等;False
除此以外。
性能:当然,我不希望产生任何不必要的开销。
我认为最好:
- 遍历列表
- 比较相邻元素
- 和
AND
所有结果布尔值
但是我不确定最Pythonic的方法是什么。
缺少短路功能只会损害早期输入不相等的长输入(超过50个元素)。如果这种情况经常发生(频率取决于列表的长度),则需要短路。最好的短路算法似乎是@KennyTM checkEqual1
。但是,它为此付出了巨大的代价:
- 性能几乎是同类产品的20倍
- 短名单上的性能提高了2.5倍
如果没有出现早期输入不相等的长输入(或发生的次数很少),则不需要短路。然后,到目前为止最快的是@Ivo van der Wijk解决方案。
functools.reduce(operator.eq, a)
没有提出建议。
a == b
或等于a is b
?