乙個很簡單的問題:統計列表中元素出現個數、比例。
想了以下4種解決方案。我感覺pandas應該是最快的,不過在不能呼叫第三方庫的情況下,可以試試前面幾種哪個快些。
ls = ['a','a','a','b','b','c']
countdict = dict()
proportitiondict = dict()
for i in set(ls):
countdict[i] = ls.count(i)
proportitiondict[i] = ls.count(i)/len(ls)
print(countdict)
print(proportitiondict)
ls = ['a','a','a','b','b','c']
countdict = dict()
proportitiondict = dict()
for i in ls:
countdict[i] = countdict.get(i,0) + 1
for i in countdict:
proportitiondict[i] = countdict[i]/len(ls)
print(countdict)
print(proportitiondict)
from collections import counter
ls = ['a','a','a','b','b','c']
countdict = counter(ls)
proportitiondict = dict()
for i in countdict:
proportitiondict[i] = countdict[i]/len(ls)
print(countdict)
print(proportitiondict)
counter()類只有自動計數功能,沒有自動求比例的功能。有乙個獲取頻數最高的前n個元素的方法:
counter('abracadabra').most_common(1)
括號裡的引數代表獲取出現次數最多的前幾個元素,不填引數則按頻數從高到低輸出所有。
import pandas as pd
ls = ['a','a','a','b','b','c']
se = pd.series(ls)
countdict = dict(se.value_counts())
proportitiondict = dict(se.value_counts(normalize=true))
print(countdict)
print(proportitiondict)
value_counts()返回的是series,而且帶有自動按頻數排序的功能,比如想獲取出現次數最多的前2個:
se.value_counts().iloc[:2]
Python 列表元素統計
列表元素統計方法 1.使用字典 對列表元素進行一次遍歷,將結果保留在字典中 2.使用集合和內建函式 將列表轉化為集合,得到所有不同元素,對不同元素呼叫 list.count item 以統計次數 第二種方法的簡單應用 coding utf 8 question 有乙個數字列表,找出列表 現次數超過列...
python刪除列表元素 Python列表元素分組
比如列表 0,0,0,1,1,2,3,3,3,2,3,3,0,0 分割成 0,0,0 1,1 2 3,3,3 2 3,3 0,0 如何解決這樣的問題呢?1 首先說明,如果這樣的題目都不能寫出 原因在基本的迴圈判斷沒有搞清楚。2 黃哥在如何訓練自己的程式設計思路 文章所說的,做習題,要像開發專案的流程...
python列表元素移動 Python列表元素分組
比如列表 0,0,0,1,1,2,3,3,3,2,3,3,0,0 分割成 0,0,0 1,1 2 3,3,3 2 3,3 0,0 如何解決這樣的問題呢?1 首先說明,如果這樣的題目都不能寫出 原因在基本的迴圈判斷沒有搞清楚。2 黃哥在如何訓練自己的程式設計思路 文章所說的,做習題,要像開發專案的流程...