本文實例展示了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,如需轉載請自行聯系原作者