我是编码的新手。我需要计算列表列表中每个项目的出现次数。以下是我处理的列表列表的示例:
GC = [[5,4,3,2,1],[9,8,7,6,5,4,3,2],[4,3,2,1],[10,9,8,7,6,5,4]]
并将结果打印在两列中。第1列=列表元素列表的范围,第2列=每个元素的总出现次数。
答案 0 :(得分:2)
您可以使用一些内置库/模块轻松完成此任务:
from itertools import chain
from collections import Counter
l = [[5,4,3,2,1],[9,8,7,6,5,4,3,2],[4,3,2,1],[10,9,8,7,6,5,4]]
l = chain.from_iterable(l)
print Counter(l)
chain.from_iterable(l)
将列表展平为1维,然后Counter
构造函数创建一个Counter对象,该对象基本上是将每个唯一项映射到列表中的计数。
答案 1 :(得分:1)
如果您想要每个数字和列数:
l = [[5,4,3,2,1],[9,8,7,6,5,4,3,2],[4,3,2,1],[10,9,8,7,6,5,4]]
flattened = ([x for y in l for x in y])
counts = [[ele,flattened.count(ele)]for ind, ele in enumerate(set(flattened))]
print counts
[[1, 2], [2, 3], [3, 3], [4, 4], [5, 3], [6, 2], [7, 2], [8, 2], [9, 2], [10, 1]]
答案 2 :(得分:0)
如果您刚接触编程,那么也许您正在这样做以了解循环如何工作,在这种情况下,下面的示例可能有所帮助。但重要的是要注意它不是最有效的方法,请参阅上面的sshashank124或Padraic Cunningham。
GC = [[5,4,3,2,1],[9,8,7,6,5,4,3,2],[4,3,2,1],[10,9,8,7,6,5,4]]
nums = list(set(flatten(GC)))
occurances = []
for i in nums:
p = 0
for i2 in GC:
for k2 in i2:
if i == k2:
p += 1
occurances.append(p) # save total count in list
print zip(nums, occurances)