日韩性视频-久久久蜜桃-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的全部內容,希望文章能夠幫你解決所遇到的問題。

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

主站蜘蛛池模板: av一二三四区 | 日韩乱码人妻无码中文字幕久久 | 一区二区三区伦理片 | 青草视频在线播放 | 日日爱886 | 97人妻精品一区二区三区视频 | 在线精品免费视频 | 在线中文字幕av | 欧美激情一区二区在线 | 老司机激情视频 | 神马久久午夜 | 色婷网| 国产毛片精品国产一区二区三区 | 日本三级一区二区 | 亚洲视频在线观看网站 | 少妇性高潮视频 | 无码 制服 丝袜 国产 另类 | 国产专区一区二区 | 草逼视频网 | 初音未来打屁股 | 欧美一级黄色片视频 | 日本一区二区三区四区视频 | 五月激情五月婷婷 | 一直草| 亚洲九九精品 | 美日韩黄色片 | 国产乱子视频 | 黄色a毛片 | 色av网| 日韩精品福利在线 | 天堂在线视频免费 | 天天干夜夜骑 | 女同一区二区三区 | 国产女同视频 | 日本特黄特黄刺激大片 | 日韩在线小视频 | 人妻熟人中文字幕一区二区 | 欧美色综合天天久久综合精品 | 免费91网站 | 波多野结衣一区二区三区四区 | 免费国产a级片 | 嫩草影院永久入口 | 久操精品 | 五月婷婷综合在线观看 | 狠狠v欧美v日韩v亚洲ⅴ | 亚洲成人黄色在线观看 | 强侵犯の奶水授乳羞羞漫虐 | 免费无码又爽又黄又刺激网站 | 91精品国产高清一区二区三区蜜臀 | 宅男av | av黄在线| 最近中文字幕在线观看 | 美女黄色小视频 | 欧美久久久久久久久久久 | 欧美区视频 | 精品一区二区三区免费毛片爱 | 欧美精品久久天天躁 | 午夜精品国产精品大乳美女 | 欧美情趣视频 | 豆花视频在线播放 | 男男野外做爰全过程69 | 少妇做爰xxxⅹ性视频 | 欧美日韩成人在线视频 | 国产伦理一区 | 黄黄的网站 | 成人黄性视频 | 中文字幕日韩电影 | 奇米色综合 | 超碰77 | 性囗交免费视频观看 | 强行无套内谢大学生初次 | 一本在线 | 久久亚洲av永久无码精品 | 全程粗话对白视频videos | 婷婷一区二区三区四区 | 久久成人免费视频 | 中文字幕狠狠 | 欧美激情69| 欧洲亚洲天堂 | 国产一级免费视频 | 午夜精品久久久久久久99黑人 | 亚洲国产影院 | 色五夜| 国产精品视频999 | 久久国产精品国语对白 | 欧美久久久久久久久久 | 欧美不卡视频在线观看 | 操一操 | 18av视频| 欧美三级在线看 | 激情小说综合 | 免费黄色在线视频 | 日日噜噜噜夜夜爽爽狠狠 | 精品黑人一区二区三区久久 | 免费观看黄色一级片 | 1024久久| 欧美一二三区视频 | 久久综合爱| 人妻精品一区二区在线 |