Python次数降序排序

5.编写程序,生成200个在[0,100]的随机数,统计不同数字出现的次数,并按不同数字出现的次数降序输出。

  • 你可以看下这个问题的回答https://ask.csdn.net/questions/7449318
  • 你也可以参考下这篇文章:python随机数产生100个整数(0-100),统计出现次数最多的数字.
  • 除此之外, 这篇博客: python打印多个列表的所有组合中的 方法二的改进, 1)简化了参数, 2)增加了参数类型声明 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • import itertools
    
    a = [1, 2, 3]
    b = ['a', 'b', 'c', 'd']
    c = ['@@', '$$']
    #简化了参数, 增加了参数类型声明
    def combination(*args:list):
        config = [e for e in args]
        res = []
        tmp = []
        dfs(res, tmp, config, 0)
        print(res)
        print('combination num:', len(res))
    # dfs没变动
    def dfs(res=[], tmp=[], config=[], i=0):
        if i == len(config):
            res.append(tmp.copy())
        else:
            for e in config[i]:
                # change spot
                tmp.append(e)
                # new condition,new recursion
                dfs(res, tmp, config, i + 1)
                # restore spot
                tmp.pop(len(tmp) - 1)
    # 执行主体函数         
    combination(a,b,c)
    '''
    打印结果:
    [[1, 'a', '@@'], [1, 'a', '$$'], [1, 'b', '@@'], [1, 'b', '$$'], 
    [1, 'c', '@@'], [1, 'c', '$$'], [1, 'd', '@@'], [1, 'd', '$$'], 
    [2, 'a', '@@'], [2, 'a', '$$'], [2, 'b', '@@'], [2, 'b', '$$'], 
    [2, 'c', '@@'], [2, 'c', '$$'], [2, 'd', '@@'], [2, 'd', '$$'], 
    [3, 'a', '@@'], [3, 'a', '$$'], [3, 'b', '@@'], [3, 'b', '$$'], 
    [3, 'c', '@@'], [3, 'c', '$$'], [3, 'd', '@@'], [3, 'd', '$$']]
    24
    '''
    
  • 您还可以看一下 李宁老师的Python 面试100讲(基于Python3.x)课程中的 请编写一个递归生成器,将任意多维的列表转换为一维列表小节, 巩固相关知识点
  • 以下回答由chatgpt基于相关博客总结生成:

    使用Python对一组200个在[0,100]范围内的随机数进行排序,并统计各个不同数字的出现次数,并以不同数字出现的次数的降序方式输出的解决方案:

    import random
    
    # 生成随机数列表
    nums = [random.randint(0, 100) for i in range(200)]
    
    # 排序
    nums_sorted = sorted(nums)
    
    # 统计不同数字的出现次数
    count_dict = {}
    for num in nums_sorted:
        if num not in count_dict:
            count_dict[num] = 1
        else:
            count_dict[num] += 1
    
    # 按出现次数降序输出
    result = sorted(count_dict.items(), key=lambda x:x[1], reverse=True)
    
    print(result)
    

    解释如下:

    1. 首先使用列表推导式生成200个在[0,100]范围内的随机数列表;

    2. 排序可以使用Python内置的sorted()方法,对列表进行排序;

    3. 统计不同数字的出现次数需要用到一个字典,通过遍历排序后的列表记录每个数字出现的次数;

    4. 将字典转化为元素为二元组的列表,使用sorted()方法按第二个元素(出现次数)进行降序排序。其中item()方法可以将字典的键值对转化为元组。

    以上代码为示例代码,可以直接运行并得到结果。

import random

rand_num_list = [random.randint(0, 100) for i in range(200)]
num_count_dict = {}
for i in rand_num_list:
    if i in num_count_dict:
        num_count_dict[i] += 1
    else:
        num_count_dict[i] = 1

# 按出现次数降序输出
result = sorted(num_count_dict.items(), key=lambda x: x[-1], reverse=True)
for item in result:
    print("数字:%s,出现次数:%s" % (item[0], item[1]))

有帮助的话,请点采纳该答案~