为了账号安全,请及时绑定邮箱和手机立即绑定

如何计算列表中元素的频率?

如何计算列表中元素的频率?

慕桂英4014372 2019-06-25 16:57:21
我需要在列表中找到元素的频率a = [1,1,1,1,2,2,2,2,3,3,4,5,5]输出->b = [4,4,2,1,2]此外,我还想从a = [1,2,3,4,5]如何计算列表中元素的频率?
查看完整描述

3 回答

?
料青山看我应如是

TA贡献1772条经验 获得超8个赞

由于列表是有序的,您可以这样做:

a = [1,1,1,1,2,2,2,2,3,3,4,5,5]from itertools import groupby[len(list(group)) for key, group in groupby(a)]

产出:

[4, 4, 2, 1, 2]


查看完整回答
反对 回复 2019-06-25
?
慕田峪4524236

TA贡献1875条经验 获得超5个赞

在Python2.7(或更新版本)中,您可以使用collections.Counter:

import collections
a = [1,1,1,1,2,2,2,2,3,3,4,5,5]counter=collections.Counter(a)print(counter)# Counter({1: 4, 2: 4, 3: 2, 5: 2, 4: 1})print(counter.values())# [4, 4, 2, 1, 2]print(counter.keys())# [1, 2, 3, 4, 5]print(counter.most_common(3))# [(1, 4), (2, 4), (3, 2)]

如果使用Python2.6或更高版本,可以下载这里.


查看完整回答
反对 回复 2019-06-25
?
斯蒂芬大帝

TA贡献1827条经验 获得超8个赞

Python 2.7+引入字典理解。从列表中构建字典,既可以使您获得计数,也可以消除重复的内容。

>>> a = [1,1,1,1,2,2,2,2,3,3,4,5,5]>>> d = {x:a.count(x) for x in a}>>> d{1: 4, 2: 4, 3: 2, 4: 1, 5: 2}>>> a, b = d.keys(), d.values()>>> a[1, 2, 3, 4, 5]>>> b[4, 4, 2, 1, 2]


查看完整回答
反对 回复 2019-06-25
  • 3 回答
  • 0 关注
  • 597 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信