数字のリスト(または反復可能)がすべて同じ符号を持っているかどうかをどのように判断できますか?
これが私の最初の(ナイーブな)ドラフトです:
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および/または正しい方法はありますか?最初に頭に浮かぶのは、反対の兆候が見られたら反復をやめることです。
アップデート
パフォーマンスは気になりますが、今のところ答えは好きです。私はパフォーマンス中毒者ではありませんが、リストを扱うときはパフォーマンスを考慮するのが合理的だと思います。私の特定のユースケースでは、それは大したことではないと思いますが、この質問を完全にするために、それに対処するのは良いことだと思います。私の理解では、最小関数と最大関数にはO(n)のパフォーマンスがあります。これまでに提案された2つの回答は、O(2n)パフォーマンスですが、反対の符号が検出されたら終了するための短絡を追加する上記のルーチンは、最悪のO(n)パフォーマンスになります。考え?