1. 程式人生 > >python小練習:給定一個非空且為正整數的列表 按重復次數 降序排列輸出

python小練習:給定一個非空且為正整數的列表 按重復次數 降序排列輸出

class 數字 轉換成 原來 小練習 顯示 python index 去重

假設有個列表 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列表裏面的值 這一步很關鍵)

 

python小練習:給定一個非空且為正整數的列表 按重復次數 降序排列輸出