zoukankan      html  css  js  c++  java
  • python小练习: 给定一个数组 按重复次数 降序排列输出 数组非空且为正整数

    假设有个列表  a=[1,1,1,2,2,4,5,5,5,5] (非空且为正整数)

    那么根据要求 最终输出的形式为  5,1,2,4  (按重复次数 降序排列输出)

    代码实现及解释:

    a=[1,1,1,2,2,4,5,5,5,5]
    num=[]

    for i in a:
    s = a.count(i)
    num.append(s)#取出数字出现的次数 放进num中

    num1 = sorted(num,reverse=True)# 降序排列num 并赋值给num1
    num2=list(set(num1))#去重并转换成列表类型 (注:去重后 元素显示是无序的)
    num2.sort(key=num1.index)#按原来num1的顺序排序 (对应最终按要求输出的 a列表里面的值 这一步很关键)
    num3=[]

    for x in num2:
    for i in a:
    if x ==a.count(i):
    num3.append(i)#取出次数对应a列表里面的值放进新列表num3中 num3中的元素和a列表里面的元素一样 只是顺序是按重复的次数显示 且元素有重复值
    else:
    pass
    num4=[]
    for j in num3:
    if j not in num4:
    num4.append(j)#去重
    print(num4)
     

    最后输出为:[5, 1, 2, 4]

    这边有个知识点   列表去重后 并按原来的顺序排序:

    num2=list(set(num1))#去重并转换成列表类型  (注:去重后 元素显示是无序的):

    num2.sort(key=num1.index)#按原来num1的顺序排序 (对应最终按要求输出的 a列表里面的值 这一步很关键)


    方法2 利用字典

    a = [1,1,1,2,2,4,5,5,5,5]
    b = set(a)
    c = {}
    d = []
    for i in b :
      num = a.count(i)
      c[i]=num
    for i2 in c:
      d.append(i2)

    print sorted(d,reverse=True)

     
     
  • 相关阅读:
    HTTP Error 500.19
    为了找到自己的路——leo锦书62
    hdu3068 最长回文串
    AE+SceneControl源代码共享
    从节能的数据中心的硬件和软件设计的角度(一)
    设计模式------工厂方法模式
    PSU 离11.2.0.3.0 -> 11.2.0.3.11 如果解决冲突的整个
    Android四个多线程分析:MessageQueue实现
    shiro权限架作战
    Codeforces 549G. Happy Line 馋
  • 原文地址:https://www.cnblogs.com/dwtt/p/8514514.html
Copyright © 2011-2022 走看看