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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python:sort,sorted,argsort,lexsort

發布時間:2025/3/20 python 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python:sort,sorted,argsort,lexsort 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Python list內置sort()方法用來排序,也可以用python內置的全局sorted()方法來對可迭代的序列排序生成新的序列

目錄

  • 1.使用sort排序
  • 2.使用sorted()排序
    • key參數
  • 3.argsort
  • 4.lexsort

1.使用sort排序

用法:
list.sort(func=None, key=None, reverse=False(or True))

  • 對于reverse這個bool類型參數,當reverse=False時:為正向排序;當reverse=True時:為方向排序。默認為False。
  • 執行完后會改變原來的list,如果你不需要原來的list,這種效率稍微高點
  • 為了避免混亂,其會返回none
my_list = [3, 5, 1, 4, 2] my_list.sort() print my_list#輸出: [1, 2, 3, 4, 5]

2.使用sorted()排序

這個和第一種的差別之處在于:

  • sorted()不會改變原來的list,而是會返回一個新的已經排序好的list
  • list.sort()方法僅僅被list所定義,sorted()可用于任何一個可迭代對象

用法:
sorted(list)

  • 該函數也含有reverse這個bool類型的參數,當reverse=False時:為正向排序(從小到大);當reverse=True時:為反向排序(從大到小)。當然默認為False。
  • 執行完后會有返回一個新排序好的list
my_list = [3, 5, 1, 4, 2] result = sorted(my_list) print result#輸出: [1, 2, 3, 4, 5] my_dict = {"a":"1", "c":"3", "b":"2"} result = sorted(my_dict) print result#輸出: ['a', 'b', 'c']

key參數

1.對復雜的元組排序

student_tuples = [('john', 'A', 15),('jane', 'B', 12),('dave', 'B', 10), ] result = sorted(student_tuples, key=lambda student: student[2]) print result#輸出 [('dave', 'B', 10), ('jane', 'B', 12), ('john', 'A', 15)] # lambda student:student[2] 等價于# def f(student):# return student[2]

2.根據字典的value排序

默認sorted是對dict的key排序的,如果要根據dict的value排序就需要指定key參數了

my_dict = {"a":"2", "c":"5", "b":"1"}result = sorted(my_dict) print result #默認對dict排序,不指定key參數,會默認對dict的key值進行比較排序 #result輸出: ['a', 'b', 'c']result2 = sorted(my_dict, key=lambda x:my_dict[x]) print result2 #指定key參數,根據dict的value排序 #result2輸出:['b', 'a', 'c']

3對多列排序

a = [[2,3,4], [2,4,5],[3,3,4]] sorted(a, key=lambda x: (x[1], x[0])) print(a) #輸出 [[2, 3, 4], [3, 3, 4], [2, 4, 5]]

3.argsort

numpy.argsort(a, axis=1, kind=‘quicksort’, order=None)

  • a:所需排序的數組
  • axis:數組排序時的基準,axis=0,按列排列;axis=1,按行排列
  • order:一個字符串或列表,可以設置按照某個屬性進行排序

參數axis

>>>list1=[4,2,5,7,3] >>>a=np.array(list1) >>>a array([4, 2, 5, 7, 3]) >>>b=np.argsort(a) >>>b array([1, 4, 0, 2, 3], dtype=int64) # 列表b的元素表示的是原列表a中的元素的索引,5各元素的索引分別為0-4 # 返回的結果可以這樣解讀: # b[0]=1,表示原列表a的最小元素的索引為1,即原列表a中的第2個元素為最小值 # b[1]=4,表示原列表a的第二小元素的索引為4,即原列表a中的第5個元素為第二小元素 # ... # b[4]=3,表示原列表a中的最大元素的索引為3,即原列表a中的第4個元素為最大值 >>>list2=[[3, 2],[5, 7]] >>>c=np.array(list2) >>>c array([[3, 2],[5, 7]]) >>>np.argsort(c, axis=1) array([[1, 0],[0, 1]],dtype=int64) # axis=1,表明按照行進行排序,即是對[3, 2]進行排序,所以得到索引為[1, 0],其他同理 >>>np.argsort(c, axis=0) array([[0, 1],[0, 1]],dtype=int64) # axis=0,表明按照列進行排序,即是對[3, 5]進行排序,所以得到索引為[0, 1],其他同理

參數order

>>> x = np.array([(1, 0), (0, 1)], dtype=[('x', '<i4'), ('y', '<i4')]) >>> x array([(1, 0), (0, 1)], dtype=[('x', '<i4'), ('y', '<i4')]) >>> np.argsort(x, order=('x','y')) # 先按照x進行比較,再按照y進行比較,即是先比較1與0 array([1, 0]) >>> np.argsort(x, order=('y','x')) # 先按照y進行比較,再按照x進行比較,即是先比較0與1 array([0, 1])

4.lexsort

numpy.argsort(a, axis=-1, kind=‘quicksort’, order=None)

  • a:所需排序的數組
  • axis:數組排序時的基準,axis=0,按列排列;axis=1,按行排列
  • order:一個字符串或列表,可以設置按照某個屬性進行排序
>>> a=[1,5,1,4,3,4,4] >>> b=[9,4,0,4,0,2,1] >>> np.lexsort((b,a)) # b在前,a在后,即是先按照a的元素進行比較 # 如a中的最小值為兩個1,其索引分別為0,2,再計較b中相應索引上的值,即9,0 # 對應的最小應是:1,0,而其對應的索引為2,所以排序后返回的結果第一個值為索引2 # 下一個最小應是:1,9,而其對應的索引為0,所以排序后返回的結果第一個值為索引0 # 以此類推... array([2, 0, 4, 6, 5, 3, 1], dtype=int64) >>> np.lexsort((a,b)) # a在前,b在后,即是先按照b的元素進行比較 # 如b中的最小值為兩個0,其索引分別為0,4,再計較a中相應索引上的值,即1,3 # 對應的最小應是:0,1,而其對應的索引為2,所以排序后返回的結果第一個值為索引2 # 下一個最小應是:0,3,而其對應的索引為4,所以排序后返回的結果第一個值為索引4 # 以此類推... array([2, 4, 6, 5, 3, 1, 0], dtype=int64) >>> c=[[1,5,1,4,3,4,4],[9,4,0,4,0,2,1]] >>> c [[1, 5, 1, 4, 3, 4, 4], [9, 4, 0, 4, 0, 2, 1]] >>> np.lexsort(c) # 此種情況與先b后a的情況一致 array([2, 4, 6, 5, 3, 1, 0], dtype=int64)

參考:
python sort與sorted使用筆記
Python 排序—sort與sorted學習
Python——numpy排序(sort、argsort、lexsort、partition、sorted)

總結

以上是生活随笔為你收集整理的python:sort,sorted,argsort,lexsort的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 欧美天天搞 | 91视频久久久 | 99久久99久久精品国产片桃花 | 日韩无码电影 | 肉大捧一进一出免费视频 | 国产v片在线观看 | 日韩av首页 | 亚洲欧美精品一区二区 | 国产吃瓜在线 | 欧美一区二区在线观看视频 | 激情毛片视频 | 亚洲国产91 | 国产麻豆一精品一av一免费 | 欧美午夜精品久久久久久孕妇 | 黄色污污网站在线观看 | 国产又大又黄的视频 | 一区二区国产在线 | 正在播放日韩 | 97精品人妻一区二区三区蜜桃 | 国产一级特黄毛片 | 欧美中字 | 亚洲精品中文字幕乱码三区91 | 97超碰免费观看 | 免费看的黄色网 | 欧美综合区 | 亚洲电影在线看 | 玖玖伊人 | 日本a视频在线观看 | 免费色网 | 日本免费久久 | a毛毛片| 国产91在线播放九色 | www四虎com| 青青操狠狠干 | 欧美成人午夜免费视在线看片 | 苏晴忘穿内裤坐公交车被揉到视频 | 在线观看羞羞漫画 | 亚洲资源在线播放 | 美女被草出白浆 | 欧美另类一区二区 | 成年人视频在线观看免费 | 色国产视频 | ass极品国模人体欣赏 | 午夜在线一区 | 一本色道久久综合亚洲二区三区 | 丝袜亚洲综合 | 国产欧美又粗又猛又爽 | 五月综合激情 | 成人区人妻精品一区二区网站 | 欧美性受xxxx黒人xyx性爽 | 国产香蕉av | 初恋视频污 | 久草综合网| 台湾久久| 中文字幕一区二区视频 | 97小视频| 色综合99久久久无码国产精品 | 日本免费一区二区三区四区五六区 | 国产精品乱码一区二区三区 | 人体内射精一区二区三区 | 怡红院av亚洲一区二区三区h | 国产真人真事毛片 | a点w片| 久久久久1 | 国产视频一区二区不卡 | 亚洲欧美日韩在线看 | 国产精品成人一区二区 | 亚洲国产精品成人无码区 | jizz18国产| 久久天天东北熟女毛茸茸 | 超碰在线最新地址 | 欧美激情二区三区 | 黄色a∨| a成人在线| 欧美gv在线 | 公车激情云雨小说 | 伊人av在线播放 | 国产日韩二区 | 蜜桃视频污在线观看 | 热逼视频| 天天躁夜夜操 | 色乱码一区二区三区在线男奴 | jizz一区| 肥熟女一区二区三肥熟女 | 国产网站黄 | 秋霞一区 | 97在线免费 | 国产级毛片 | 成人激情综合网 | 日本黄页网站 | 国产欧美日韩在线视频 | 国产富婆一级全黄大片 | 欧美日韩三级在线观看 | 夜夜骑夜夜操 | 久青草影院 | 亚洲av永久无码国产精品久久 | 五月激情丁香婷婷 | 国产综合久久 | 三上悠亚在线一区二区 |