python中在什么区间怎么表示_python 中列表怎么分区间统计

问 题

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)

我这么写总是报错,我想以 50bp 为一个区间进行统计,即统计长度在 0-50 的频数,50-100 的频数...

我这么写对么,应该怎么写呢?

解决方案

# code for python3

from itertools import groupby

lst= [

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))))

結果:

0-49: 1

50-99: 10

100-149: 15

150-199: 8

200-249: 2

250-299: 5

300-349: 1

400-449: 3

450-499: 1

800-849: 1

1550-1599: 1

1700-1749: 2

2600-2649: 3

9150-9199: 2

19750-19799: 1

63350-63399: 2

不要使用內建函數的名字: list 作為變數名

你想要的區間重疊了, 比如說元素 50 就不知道要分在 0-50 還是 50-100 了

存取字典應該用 [] 而不是 ()

wx.jpg

扫一扫关注IT屋

微信公众号搜索 “ IT屋 ” ,选择关注与百万开发者在一起

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值