如何判断数字列表(或可迭代)是否都具有相同的符号?
这是我的第一个(天真的)草稿:
def all_same_sign(list):
negative_count = 0
for x in list:
if x < 0:
negative_count += 1
return negative_count == 0 or negative_count == len(list)
有没有更pythonic和/或正确的方法来做到这一点?首先想到的是一旦你有相反的迹象就停止迭代。
更新
到目前为止,我喜欢这些答案,尽管我想知道性能。我不是性能迷,但我认为在处理列表时考虑性能是合理的。对于我的特定用例,我认为这没什么大不了的,但为了这个问题的完整性,我认为解决它是件好事。我的理解是 min 和 max 函数具有 O(n) 性能。到目前为止,两个建议的答案具有 O(2n) 性能,而我上面的例程添加短路以在检测到相反符号后退出将具有最差的 O(n) 性能。想法?