Python 2.7.5(不要评判我)
我有什么(例如):
numbers = [1,3,5,1,3,5,7,0,2,2,9,1]
frequencies = [0,0,0,0,0,0,0,0,0,0]
我需要一个for 循环,通过遍历数字元素并通过索引相应地修改频率来计数。频率应如下所示:
[1,3,2,2,0,2,0,1,0,1]
我尝试使用 len() 函数...出于某种原因...我只是还没有找到正确合并计数的方法。
Python 2.7.5(不要评判我)
我有什么(例如):
numbers = [1,3,5,1,3,5,7,0,2,2,9,1]
frequencies = [0,0,0,0,0,0,0,0,0,0]
我需要一个for 循环,通过遍历数字元素并通过索引相应地修改频率来计数。频率应如下所示:
[1,3,2,2,0,2,0,1,0,1]
我尝试使用 len() 函数...出于某种原因...我只是还没有找到正确合并计数的方法。
for n in numbers:
frequencies[n] += 1
假设数字的每个元素都在 0 和频率长度之间,包括 - 不包括:
for i in range(len(frequencies)):
frequencies[i] = numbers.count(i)
计数器非常适合这个。
from collections import Counter
numbers = [1,3,5,1,3,5,7,0,2,2,9,1]
freq = Counter(numbers)
# Counter({1: 3, 2: 2, 3: 2, 5: 2, 0: 1, 7: 1, 9: 1})
# dictionary
d = dict(freq)
#{0: 1, 1: 3, 2: 2, 3: 2, 5: 2, 7: 1, 9: 1}
# tuples
t = freq.items()
# [(0, 1), (1, 3), (2, 2), (3, 2), (5, 2), (7, 1), (9, 1)]
# list
L = [freq[n] for n in xrange(max(freq.keys()) + 1)]
# [1, 3, 2, 2, 0, 2, 0, 1, 0, 1]
# add more
freq.update(numbers)
# Counter({1: 6, 2: 4, 3: 4, 5: 4, 0: 2, 7: 2, 9: 2})