-1

私はpython 2.7.3を使用しています

a = [1,2,3,4]
b = []
for i in a:
    b.append(1/i)

b = [1,0,0,0] として予期しない出力が得られます。しかし、i ループの値を出力すると正常に動作します。

for i in a:
    b.append(i)

b =[1, 2, 3, 4] が得られます。この理由は何ですか。また、正しい方法で同じことを行うにはどうすればよいですか?

4

1 に答える 1

7

Python 2 では、/両方のオペランドが整数の場合、整数除算を意味します。試してみてください1.0 / i

 

In [2]: 1 / 2
Out[2]: 0

In [3]: 1.0 / 2
Out[3]: 0.5

In [4]: 1 / 2.0
Out[4]: 0.5

 

/演算子を Python 3 のように動作させるには、次を使用しfrom __future__ import divisionます。

In [11]: from __future__ import division

In [12]: 1 / 2
Out[12]: 0.5
于 2013-03-17T14:50:52.680 に答える