我正在计算列表中某些事情发生的次数。是否可以设置变量来遍历每个索引并对其进行计数。我想追加每一个与列表相反的次数 我希望它看起来像这样。忘记while循环,只是为了表明我正在循环这个。 例。如果可能的话,导入一个库来制作一个快捷方式,或者它是唯一的方法。
while True:
index = 0
L = ["brown", "brown", "brown", "red", "red", "yellow", "yellow"]
numberOfTimes = L.count([index])
index = index + numberOfTimes
numberOfTimesList.append(numberOfTimes)
然后我想制作另一个清单,这样我才会看到像这样的褐色:
["brown", "red", "yellow"] [3, 2, 2]
答案 0 :(得分:5)
from collections import Counter
L = ["brown", "brown", "brown", "red", "red", "yellow", "yellow"]
cnt = Counter(L)
print cnt
print cnt.keys(), cnt.values()
输出:
Counter({'brown': 3, 'yellow': 2, 'red': 2})
['brown', 'yellow', 'red'] [3, 2, 2]
生成的计数器对象可以作为字典进行操作,还有其他方便的例程,例如cnt.most_common(n)
,它将返回n
最常见的元素及其计数。
答案 1 :(得分:0)
您可以轻松地执行此操作:
[1, 2, 3, 4, 1, 4, 1].count(1)
以上代码计算了数字1
在列表中的显示次数。你可以为你的清单做同样的事情。
在你的情况下这样做。
for thing in L:
# Count variable represents the number of times the thing variable was found
count = L.count(thing)
答案 2 :(得分:0)
基于Python:
首先,循环或迭代的Pythonic
方式是:
In [5]: L = ["brown", "brown", "brown", "red", "red", "yellow", "yellow"]
In [6]: for i in L:
...: print i
...:
brown
brown
brown
red
red
yellow
yellow
其次,要计算事件,Python中最基本和最强大的工具:dict
会有所帮助。
In [8]: counts = {}
In [9]: for i in L:
...: counts[i] = (counts[i] + 1) if (i in counts) else 1
...:
In [10]: counts
Out[10]: {'brown': 3, 'red': 2, 'yellow': 2}
In [11]: counts.keys()
Out[11]: ['brown', 'yellow', 'red']
In [12]: counts.values()
Out[12]: [3, 2, 2]
使用collections.Counter
作为@ YS-L说更能说服你的问题,但我认为在使用更高级别的工具之前熟悉Python的基础知识会更好