回答編集履歴

2 追記

hayataka2049

hayataka2049 score 28171

2018/10/13 09:06  投稿

条件演算子を使ってみますか。
```python
>>> [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`なことを利用する方法で、一般的に知られているものです。  
 
```python  
>>> [(x > 0) - (x < 0) for x in [-2, -1, 0, 1, 2]]  
[-1, -1, 0, 1, 1]  
```  
 
[数値の符号を返す関数のエレガントな書き方 | OpenCV画像解析入門](http://www.cellstat.net/sign/)  
---
以下修正依頼ですが、修正依頼欄に収まらなかったので回答に書きます。
> 0以上 → 1
0以下 → -1
0 → 0
0以上、0以下は0も範囲に含みますから、矛盾しています(言いたいことはわかるけど)。
あと、質問タイトルで整数といいつつ小数を判定しているのも変な感じです。
1 追記

hayataka2049

hayataka2049 score 28171

2018/10/13 09:01  投稿

条件演算子を使ってみますか。
```python
>>> [0 if x == 0 else -1 if x < 0 else 1 for x in [-2, -1, 0, 1, 2]]
[-1, -1, 0, 1, 1]
```
もう少し可読性の良い方法がないか、考え中・・・  
 
---
 
以下修正依頼ですが、修正依頼欄に収まらなかったので回答に書きます。  
> 0以上 → 1
0以下 → -1
0 → 0
0以上、0以下は0も範囲に含みますから、矛盾しています(言いたいことはわかるけど)。
0以上、0以下は0も範囲に含みますから、矛盾しています(言いたいことはわかるけど)。
あと、質問タイトルで整数といいつつ小数を判定しているのも変な感じです。

思考するエンジニアのためのQ&Aサイト「teratail」について詳しく知る