python 统计数组中元素出现次数并进行排序

本文介绍了一种在Python中对列表进行去重并统计各元素出现次数的方法,并提供了四种不同的实现方式,包括传统循环方法、利用set去重、使用字典统计及运用Counter工具。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

lis = [12,34,456,12,34,66,223,12,5,66,12,23,66,12,66,5,456,12,66,34,5,34]

def test1():
    #进行去重
    c = []
    for i in lis:
        if i not in c:
            c.append(i)
    #进行统计,生成二维列表
    b = []
    for i in c:
        num = 0
        for j in range(len(lis)):
            if lis[j] == i:
                num += 1
        a = []
        a.append(i)
        a.append(num)
        b.append(a)
    # 排序算法,按出现次数进行降序排列
    for i in range(len(b)):
        for j in range(i,len(b)):
            if b[i][1] < b[j][1]:
                temp = b[i]
                b[i] = b[j]
                b[j] = temp
    print(b)

def test2():
    # set进行去重,进行统计生成二维列表
    b = []
    for i in list(set(lis)):
        num = 0
        for j in range(len(lis)):
            if lis[j] == i:
                num += 1
        a = []
        a.append(i)
        a.append(num)
        b.append(a)
    # 排序算法,按出现次数进行降序排列
    for i in range(len(b)):
        for j in range(i,len(b)):
            if b[i][1] < b[j][1]:
                temp = b[i]
                b[i] = b[j]
                b[j] = temp
    print(b)

def test3():
    # 统计元素出现次数,元素为key,次数为value,生成字典
    a = {}
    for i in lis:
        if i in a:
            a[i] = a[i] + 1
        else:
            a[i] = 1
    # 使用sorted对字典进行排序
    b = sorted(a.items(),key=lambda item:item[1],reverse=True)
    print(b)

def test4():
    from  collections import Counter
    import operator
    #进行统计
    a = dict(Counter(lis))
    #进行排序
    b= sorted(a.items(), key=operator.itemgetter(1),reverse=True)
    print(b)

if __name__ == '__main__':
    test1()
    test2()
    test3()
    test4()

输出结果如下:

[[12, 6], [66, 5], [34, 4], [5, 3], [456, 2], [223, 1], [23, 1]]
[[12, 6], [66, 5], [34, 4], [5, 3], [456, 2], [23, 1], [223, 1]]
[(12, 6), (66, 5), (34, 4), (5, 3), (456, 2), (23, 1), (223, 1)]
[(12, 6), (66, 5), (34, 4), (5, 3), (456, 2), (23, 1), (223, 1)]

这是面试过程中遇到的一个问题找到的解决方法,总结了一下,小编是初学者,还需不断努力学习。

统计数组元素的出现次数进行排序,是数据分析和处理中的基础操作。为了详细解答这一问题,帮助你掌握Python在这一领域中的应用,以下将分别介绍四种不同的实现方法,每一种方法都能有效地解决问题,具体如下: 参考资源链接:[Python统计数组元素频次与排序示例](https://wenku.youkuaiyun.com/doc/6412b4eabe7fbd1778d4147a?spm=1055.2569.3001.10343) 1. **手动遍历和计数**: 这种方法通过遍历数组,手动跟踪每个元素的出现次数将结果存储在一个列表中。在实现时,需要注意避免重复计数和排序时的效率问题。示例代码如下: ```python lis = [你的数组] c = [] for item in lis: if item not in c: c.append(item) b = [] for i in c: count = lis.count(i) b.append([i, count]) b.sort(key=lambda x: x[1], reverse=True) ``` 这种方法适用于小型数组,但效率较低,不推荐处理大规模数据。 2. **利用`set`去重和计数**: 利用集合(set)去除数组中的重复元素,然后通过嵌套循环来计算每个元素的出现次数最终排序。示例代码如下: ```python lis = [你的数组] c = set(lis) b = [] for item in c: count = lis.count(item) b.append([item, count]) b.sort(key=lambda x: x[1], reverse=True) ``` 这种方法比手动遍历效率更高,但仍需改进以适应大数据集。 3. **使用字典存储次数**: 使用字典(dict)存储元素及其出现次数,然后对字典的键值对进行降序排序。示例代码如下: ```python from collections import Counter lis = [你的数组] c = Counter(lis) sorted_elements = sorted(c.items(), key=lambda x: x[1], reverse=True) ``` 字典是处理此类问题的高效方法,特别是当结合collections.Counter类使用时。 4. **利用`collections.Counter`**: collections模块中的Counter类是专门用于计数的工具,能够直接得到每个元素的出现次数允许我们轻松地进行排序。示例代码如下: ```python from collections import Counter lis = [你的数组] counter = Counter(lis) sorted_elements = sorted(counter.items(), key=lambda x: x[1], reverse=True) ``` 这种方法最为简洁高效,是处理大规模数据时的首选。 以上四种方法各有优缺点,但都可以实现元素出现次数统计排序。在实际应用中,可以根据数据集的大小和具体需求选择合适的方法。《Python统计数组元素频次与排序示例》提供了更为详细的介绍和示例代码,可以帮助你更深入地理解和掌握这些方法。 参考资源链接:[Python统计数组元素频次与排序示例](https://wenku.youkuaiyun.com/doc/6412b4eabe7fbd1778d4147a?spm=1055.2569.3001.10343)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值