在分割后期望非零值时接收0.0

时间:2010-10-02 06:23:29

标签: python

...海       我在向数组插入值时遇到问题。使用的编程语言是python。问题是,我需要在执行除法后向数组插入一个值。但是数组中的每个值总是0.0。      我在这里附上代码....

print len(extract_list1)
ratio1=range(len(extract_list1))
i=0
for word in extract_list1:
 ratio1[i]=float(i/len(extract_list1))
 print extract_list1[i],ratio1[i]
 i+=1
ratio2=range(len(extract_list2))
i=0
for word in extract_list2:
 ratio2[i]=float(i/len(extract_list2))
 print extract_list2[i],ratio2[i]
 i+=1

1 个答案:

答案 0 :(得分:4)

我最好的猜测是你正在执行整数除法然后转换为浮点数,产生0.0的值,这是卡在列表中的。你想在之前转换为float 。筛选代码墙并找出

  1. 您将值插入列表。
  2. 生成该值的位置。
  3. 然后发布生成值的代码。如果值正在进入列表中(并且您似乎表明它是),那么这与列表以及与生成值的方式无关。


    正如Roger Pate在评论中指出的那样,您可以将行from __future__ import division作为源代码的第一行(如果您使用的话,还是编码后的第一行),它会自动转换所有划分为浮点划分。然后,当您明确要截断整数除法时,可以使用//作为运算符。


    查看你的代码,问题是

    float(i/len(extract_list2))
    

    这应该是

    float(i)/len(extract_list2))
    

    另外,因为您多次使用extract_list2extract_list1的长度,所以最好创建变量来存储它们。

    L1 = len(extract_list1)
    L2 = len(extract_list2)
    

    只要您不更改列表的长度,就可以引用变量。这将为您节省一些函数调用,使您的代码更简洁,更易读。