本文实例展示了Python统计列表中的重复项出现的次数的方法,是一个很实用的功能,适合Python初学者学习借鉴。具体方法如下:
对一个列表,比如[1,2,2,2,2,3,3,3,4,4,4,4],现在我们需要统计这个列表里的重复项,并且重复了几次也要统计出来。
方法1:
1
2
3
4
|
mylist = [ 1 , 2 , 2 , 2 , 2 , 3 , 3 , 3 , 4 , 4 , 4 , 4 ]
myset = set (mylist) #myset是另外一个列表,里面的内容是mylist里面的无重复 项
for item in myset:
print ( "the %d has found %d" % (item,mylist.count(item)))
|
方法2:
1
2
3
4
5
6
|
List = [ 1 , 2 , 2 , 2 , 2 , 3 , 3 , 3 , 4 , 4 , 4 , 4 ]
a = {}
for i in List :
if List .count(i)> 1 :
a[i] = List .count(i)
print (a)
|
利用字典的特性来实现。
方法3:
1
2
3
|
>>> from collections import Counter
>>> Counter([ 1 , 2 , 2 , 2 , 2 , 3 , 3 , 3 , 4 , 4 , 4 , 4 ])
Counter({ 1 : 5 , 2 : 3 , 3 : 2 })
|
这里再增补一个只用列表实现的方法:
1
2
3
4
5
6
7
8
9
10
|
l = [ 1 , 4 , 2 , 4 , 2 , 2 , 5 , 2 , 6 , 3 , 3 , 6 , 3 , 6 , 6 , 3 , 3 , 3 , 7 , 8 , 9 , 8 , 7 , 0 , 7 , 1 , 2 , 4 , 7 , 8 , 9 ]
count_times = []
for i in l :
count_times.append(l.count(i))
m = max (count_times)
n = l.index(m)
print (l[n])
|
其实现原理就是把列表中的每一个数出现的次数在其对应的位置记录下来,然后用max求出出现次数最多的位置。
只用这段代码的话,有一个缺点,如果有多个结果,最后的现实的结果只是出现在最左边的那一个,不过解决方法也很简单
感兴趣的读者可以动手实践一下本文所述代码,还可以对不足之处加以改进,使之功能更加完善。
本文转自 326647452 51CTO博客,原文链接:http://blog.51cto.com/svsky/1980297,如需转载请自行联系原作者