Maison  >  Questions et réponses  >  le corps du texte

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 的频数...

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

迷茫迷茫2740 Il y a quelques jours698

répondre à tous(2)je répondrai

  • 伊谢尔伦

    伊谢尔伦2017-04-18 10:24:06

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

    Résultat :

    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

    1. N'utilisez pas de noms de fonctions intégrés : list comme noms de variables

    2. Les plages que vous souhaitez se chevauchent. Par exemple, l'élément 50 ne sait pas s'il doit être divisé en 0-50 ou 50-100

    3. Pour accéder au dictionnaire, utilisez [] au lieu de ()


    Questions auxquelles j'ai répondu : Python-QA

    répondre
    0
  • PHP中文网

    PHP中文网2017-04-18 10:24:06

    pour moi dans la liste, je suis le contenu de la liste, il devrait être pour moi dans range(len(list))

    répondre
    0
  • Annulerrépondre