2013-03-17 88 views
-1

我使用python 2.7.3 当我尝试Python的 “for” 循环,分割误差

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] 是什么这样做的原因。另外我如何以正确的方式做同样的事情?

回答

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 
+2

或尝试'从未来的进口__division__',或Python 3。 – user9876 2013-03-17 14:52:33