【Python】利用count函式求list中每個元素出現的次數,求眾數的改進
阿新 • • 發佈:2019-02-04
在《【Python】利用setdefault函式實現dict的轉置(key與value對互換),統計value出現的次數》(點選開啟連結)中介紹過,如何統計dict中相同value的key的出現次數。本文介紹如何利用list自帶的count函式,來統計list中每個元素出現的次數。
具體程式碼如下:
arr_appear=dict((a,arr.count(a)) for a in arr);
是的,就一行,其中arr_appear是一個dict,arr是要統計的list。
如下程式碼:
# -*-coding:utf-8-*- arr = [1, 2, 3, 2, 3, 1, 4]; arr_appear = dict((a, arr.count(a)) for a in arr); print arr_appear;
執行結果如下:
完成了一個求list中每個元素出現的次數的功能,返回一個dict,這個dict的key是list本身的元素,value是出現的次數。
本來arr.count(a),只是返回該元素的出現次數,這裡只是在遍歷這個list的同時,構造一個相應dict。
有了如上的理論,我們可以對《【Python】不用numpy用純python求極差、平均數、中位數、眾數與方差,python的列印到控制檯》(點選開啟連結)中介紹過,求眾數的方法進行改造,具體的程式碼如下:
# -*-coding:utf-8-*- # 眾數 def get_mode(arr): mode = []; arr_appear = dict((a, arr.count(a)) for a in arr); # 統計各個元素出現的次數 if max(arr_appear.values()) == 1: # 如果最大的出現為1 return; # 則沒有眾數 else: for k, v in arr_appear.items(): # 否則,出現次數最大的數字,就是眾數 if v == max(arr_appear.values()): mode.append(k); return mode; arr = [1, 2, 3, 2, 3, 1, 4]; print get_mode(arr);
執行的結果如下: