无法找出为什么这不起作用?:
def frequencies(counts):
total = sum(counts)
frequencies = []
for count in counts:
frequencies.append(float(count/total))
return frequencies
它应该将一个整数列表作为参数并返回一个相对频率列表。
答案 0 :(得分:4)
这是因为sum()
返回一个整数,因此你正在进行整数除法。
使用
total = float(sum(counts))
代替或
frequencies.append(count/float(total))
答案 1 :(得分: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]