日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > python >内容正文

python

Python,得到列表最小k个数或最大k个数的索引

發(fā)布時間:2025/3/19 python 17 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Python,得到列表最小k个数或最大k个数的索引 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

如果是直接得到最小或最大k個數(shù),那么直接排序即可。但是如果要得到索引,那么不能排序,或者你排序時附帶數(shù)據(jù)的下標(biāo)。本文通過兩種方法來展示怎么得到最小k個數(shù)的索引,一種是直接使用min()函數(shù)得到列表的最小值,然后使用index()函數(shù)得到該值的索引,循環(huán)k次即可,很方便且易于理解;另一種則是在排序中附帶數(shù)據(jù)下標(biāo),最終排序結(jié)束,也可得到最小k個數(shù)在原列表的索引。

1. List.index(min(List))

List = [3, -4, 0, 6.4, -1.6, 9.09] Lst = List[:] #對列表進(jìn)行淺復(fù)制,避免后面更改原列表數(shù)據(jù) k = 3 #此處示范得到列表最小3個數(shù)的索引 index_k = [] for i in range(k):index_i = Lst.index(min(Lst)) #得到列表的最小值,并得到該最小值的索引index_k.append(index_i) #記錄最小值索引Lst[index_i] = float('inf') #將遍歷過的列表最小值改為無窮大,下次不再選擇print(index_k) #打印輸出最小3個數(shù)的索引以及原列表的數(shù)據(jù) for i in range(k):print(List[index_k[i]])

?在命令行終端執(zhí)行結(jié)果如下圖所示

2. 附帶索引的快速排序?

關(guān)于快排、歸并排序以及選擇排序算法可看我的另外一篇博客?https://blog.csdn.net/yldmkx/article/details/108367734,強(qiáng)烈推薦先理解快排之后,再去理解添加索引的快排算法。

def quicksort(Lp):if len(Lp)<2:return LpL = Lp[:]key = len(L)//2left = -1right = len(L)while left<right:right -= 1 #下一輪開始都需要在上輪的值移動一步,不然又重復(fù)計(jì)算while right>key and L[right][0]>=L[key][0]:right -= 1if right>key: #滿足條件說明while循環(huán)是因?yàn)長[right]<L[key]而跳出,此時需要更新keyL[right], L[key] = L[key], L[right]key = rightleft += 1 #下一輪開始都需要在上輪的值移動一步,不然又重復(fù)計(jì)算while left<key and L[left][0]<=L[key][0]:left += 1if key>left: #滿足條件說明while循環(huán)是因?yàn)長[left]>L[key]而跳出,此時需要更新keyL[left], L[key] = L[key], L[left]key = leftreturn quicksort1(L[:key]) + [L[key]] + quicksort1(L[key+1:])Lit = [3, -4, 0, 6.4, -1.6, 9.09] List = [[Lit[i], i] for i in range(len(Lit))] #將原列表拓展成附帶索引的二維列表 L = quicksort(List) #調(diào)用快排算法 k = 3 #示范尋找最小3個數(shù)的索引 for i in rang(k): #打印列表的k個最小值以及索引print(L[i])

執(zhí)行結(jié)果如下圖所示,每一次第一個數(shù)是列表的前k個最小值,第二個數(shù)是該最小值在原列表的索引,和第一種方法結(jié)果一樣

總結(jié)

以上是生活随笔為你收集整理的Python,得到列表最小k个数或最大k个数的索引的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。