python 中列表怎么分區(qū)間統(tǒng)計(jì)
問(wèn)題描述
list= [ ..., 2648, 2648, 2648, 63370, 63370, 425, 425, 120, 120, 217, 217, 189, 189, 128, 128, 115, 115, 197, 19752, 152, 152, 275, 275, 1716, 1716, 131, 131, 98, 98, 138, 138, 277, 277, 849, 302, 152, 1571, 68, 68, 102, 102, 92, 92, 146, 146, 155, 155, 9181, 9181, 474, 449, 98, 98, 59, 59, 295, 101, ...]for i in list: if int(i/50)+1 not in dic:dic(int(i /50)+1)=list.count(i) else:dic(int(i /50)+1)+=list.count(i)
我這么寫(xiě)總是報(bào)錯(cuò),我想以 50bp 為一個(gè)區(qū)間進(jìn)行統(tǒng)計(jì),即統(tǒng)計(jì)長(zhǎng)度在 0-50 的頻數(shù),50-100 的頻數(shù)...
我這么寫(xiě)對(duì)么,應(yīng)該怎么寫(xiě)呢?
問(wèn)題解答
回答1:# code for python3from itertools import groupbylst= [ 2648, 2648, 2648, 63370, 63370, 425, 425, 120, 120, 217, 217, 189, 189, 128, 128, 115, 115, 197, 19752, 152, 152, 275, 275, 1716, 1716, 131, 131, 98, 98, 138, 138, 277, 277, 849, 302, 152, 1571, 68, 68, 102, 102, 92, 92, 146, 146, 155, 155, 9181, 9181, 474, 449, 98, 98, 59, 59, 295, 101, 5]for k, g in groupby(sorted(lst), key=lambda x: x//50): print(’{}-{}: {}’.format(k*50, (k+1)*50-1, len(list(g))))
結(jié)果:
0-49: 150-99: 10100-149: 15150-199: 8200-249: 2250-299: 5300-349: 1400-449: 3450-499: 1800-849: 11550-1599: 11700-1749: 22600-2649: 39150-9199: 219750-19799: 163350-63399: 2
不要使用內(nèi)建函數(shù)的名字: list 作為變數(shù)名
你想要的區(qū)間重疊了, 比如說(shuō)元素 50 就不知道要分在 0-50 還是 50-100 了
存取字典應(yīng)該用 [] 而不是 ()
我回答過(guò)的問(wèn)題: Python-QA
回答2:for i in list i是list中的內(nèi)容,應(yīng)該是for I in range(len(list))
相關(guān)文章:
1. java - Web開(kāi)發(fā) - POI導(dǎo)出帶有下拉框的Excel和解決下拉中數(shù)組過(guò)多而產(chǎn)生的異常2. Python做掃描,發(fā)包速度實(shí)在是太慢了,有優(yōu)化的方案嗎?3. javascript - 關(guān)于定時(shí)器 與 防止連續(xù)點(diǎn)擊 問(wèn)題4. objective-c - ios百度地圖定位問(wèn)題5. java - 微信退款,公賬號(hào)向個(gè)人轉(zhuǎn)賬SSL驗(yàn)證失敗6. python - 使用xlsxwriter寫(xiě)入Excel, 只能寫(xiě)入65536 無(wú)法繼續(xù)寫(xiě)入.7. python - flask如何創(chuàng)建中文列名的數(shù)據(jù)表8. java - 安卓接入微信登錄,onCreate不會(huì)執(zhí)行9. 微信開(kāi)放平臺(tái) - Android調(diào)用微信分享不顯示10. python - mysql 如何設(shè)置通用型字段? 比如像mongodb那樣
