質問: [] for value in values: if value > 0: output.append(1) elif value < 0: output.append(-1) else: output.append(0) print(output) # 実行結果 # [1, -1, 1, -1, 1] ``` ### 試したこと ここに問題に対して試したことを記載してください。 ### 補足情報(FW/ツールのバージョンなど) ここにより詳細な情報を記載してください。
回答: 条件演算子を使ってみますか。 ``` >>> [0 if x == 0 else -1 if x < 0 else 1 for x in [-2, -1, 0, 1, 2]] [-1, -1, 0, 1, 1] ``` もう少し可読性の良い方法がないか、考え中・・・ #### 追記 こんな方法があったのを思い出しました。`bool`の`True`が`1`、`False`が`0`なことを利用する方法で、一般的に知られているものです。 ``` >>> [(x > 0) - (x < 0) for x in [-2, -1, 0, 1, 2]] [-1, -1, 0, 1, 1] ``` 数値の符号を返す関数のエレガントな書き方 | OpenCV画像解析入門 以下修正依頼ですが、修正依頼欄に収まらなかったので回答に書きます。 > > 0以上 → 1 > > 0以下 → -1 > > 0 → 0 > > > 0以上、0以下は0も範囲に含みますから、矛盾しています(言いたいことはわかるけど)。 あと、質問タイトルで整数といいつつ小数を判定しているのも変な感じです。