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)

     
     
  • 相关阅读:
    I
    poj 3414 pots (bfs+路径记录)
    hdoj 1495 非常可乐(bfs)
    hdoj 1241 Oil Deposits (dfs)
    hdoj 2612 find a way (两次bfs)
    poj 3984 迷宫问题
    poj 3087 Shuffle'm Up (bfs)
    poj 3126 Prime Path (bfs)
    poj 3279 Fliptile
    hdu_3068 最长回文(Manacher算法)
  • 原文地址:https://www.cnblogs.com/dwtt/p/8514514.html
Copyright © 2011-2022 走看看