2011-12-01 32 views
0

不能找出为什么这不工作?:需要找到相对频率

def frequencies(counts):  
    total = sum(counts) 
    frequencies = []  
    for count in counts: 
     frequencies.append(float(count/total))  
    return frequencies 

应该采取intergers的列表作为参数,并返回相对频率的列表。

+2

解释你的意思是“不工作”。 – Toomai

回答

4

这是因为sum()返回一个整数,因此你正在做整数除法。 使用

total = float(sum(counts)) 

代替或

frequencies.append(count/float(total)) 
0

如果我理解正确的任务,代码应该算号的频率列表中的满足。 我建议这个解决方案:

def frequencies(counts): 
    stat = {} 
    total = float(len(counts)) 
    for count in counts: 
     if count in stat: 
      stat[count] = stat[count] + 1 
     else: 
      stat[count] = 1 
    frequencies = [] 
    for s in counts: 
     frequencies.append(float(stat[s]/total)) 
    return frequencies 

frequencies([1,2,1]) 
[0.6666666666666666, 0.3333333333333333, 0.6666666666666666]