本篇介紹如何使用 Python sort 排序用法與範例,在寫 python 程式有時會用到 sort 排序,python 最常需要對 list 排序,如果不考慮自己寫一個排序法的話,其實可以用 python 內建提供的 sort 排序法,接下來的教學將介紹怎麼使用 python 來作 list 的排序 sort。
Python 提供兩種內建排序的函式分別是 sort()
和 sorted()
,這兩個函式用法差別在於 sort()
會直接修改原始的 list 並完成排序,sorted()
會回傳一個已排序的新 list。以下 Python 排序的用法範例將分幾部份介紹,
Python sort 升序/由小到大
Python sort 函式參數
Python sort 降序/由大到小
Python sorted 升序/由小到大
Python sorted 降序/由大到小
按某列排序 sort by column
那我們就開始介紹 Python sort 排序吧!
Python sort 升序/由小到大 在 Python 中把一個未排序的 list 使用 sort 進行排序,預設會由小排到大(升序), 如果要由大排到小的話(降序),sort 參數請使用 reverse=True。 可以看出經過 sort 後,list1 裡的數據已經被修改成排序後的結果了。python-sort.py 1 2 3 4 5 6 7 8 list1 = [4 , 5 , 8 , 3 , 7 , 1 , 2 , 6 , 10 , 9 ] print("before:" , list1) list1.sort() print("result:" , list1) print("after :" , list1)
結果如下:1 2 3 before: [4, 5, 8, 3, 7, 1, 2, 6, 10, 9] result: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] after : [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
Python sort 函式參數 以下為 Python sort 函式參數以及說明,1 list.sort(cmp=None, key=None, reverse=False)
cmp
︰ 指定一個比較函式的話,會使用該比較函式進行排序key
︰ 指定元素的某一列為key鍵值, 也就是按照元素的某一列來進行排序reverse
︰排序規則,reverse=True 降序,reverse=False 升序(預設)。
官方文件說明 list.sort()
的詳細細節請參考這裡
Python sort 降序/由大到小 Python sort 如果要由大排到小的話(降序),sort 參數請使用 reverse=True。python-sort2.py 1 2 3 4 5 6 7 8 list1 = [4 , 5 , 8 , 3 , 7 , 1 , 2 , 6 , 10 , 9 ] print("before:" , list1) list1.sort(reverse=True ) print("result:" , list1) print("after :" , list1)
結果如下:1 2 3 before: [4, 5, 8, 3, 7, 1, 2, 6, 10, 9] result: [10, 9, 8, 7, 6, 5, 4, 3, 2, 1] after : [10, 9, 8, 7, 6, 5, 4, 3, 2, 1]
Python sorted 升序/由小到大 python sorted 用法如下,回傳的是排序好(升序)的結果,原始數據並無被修改,python-sorted.py 1 2 3 4 5 6 7 list1 = [4 , 5 , 8 , 3 , 7 , 1 , 2 , 6 , 10 , 9 ] print("before:" , list1) print("result:" , sorted(list1)) print("after :" , list1)
結果如下:1 2 3 before: [4, 5, 8, 3, 7, 1, 2, 6, 10, 9] result: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] after : [4, 5, 8, 3, 7, 1, 2, 6, 10, 9]
Python sorted 降序/由大到小 python sorted 用法如下,回傳的是排序好(降序)的結果,原始數據並無被修改,python-sorted2.py 1 2 3 4 5 6 7 list1 = [4 , 5 , 8 , 3 , 7 , 1 , 2 , 6 , 10 , 9 ] print("before:" , list1) print("result:" , sorted(list1, reverse=True )) print("after :" , list1)
結果如下:1 2 3 before: [4, 5, 8, 3, 7, 1, 2, 6, 10, 9] result: [10, 9, 8, 7, 6, 5, 4, 3, 2, 1] after : [4, 5, 8, 3, 7, 1, 2, 6, 10, 9]
按某列排序 sort by column 這邊要介紹在numpy二維陣列中怎麼按某列來排序,python3-sorted-by-column.py 1 2 3 4 5 6 7 8 9 import numpy as npa = np.array([[7 , 5 , 9 ], [4 , 8 , 6 ], [1 , 2 , 3 ]]) print(a[a[:1 ].argsort()])
或者分開寫,像是這樣1 2 idx_list=a[:1 ].argsort() print(a[idx_list])
或使用內建的sorted, 並且使用lambda指定按第2列排序, 詳細內容可以參考Python官方文件排序的介紹 , student_tuples sort by age 的部份,1 2 b = np.array(sorted(a, key=lambda x:x[1 ])) print(b)
結果輸出如下,按照第2列來排順序,其他列的資料也跟著一起搬移了,1 2 3 [[1 2 3] [7 5 9] [4 8 6]]
其他參考 Python List sort()方法 | 菜鸟教程https://www.runoob.com/python/att-list-sort.html Sw@y’s Notes: [Python]如何在Python排序(Python Sorting)http://swaywang.blogspot.com/2012/05/pythonpythonpython-sorting.html 淺談 Python 的排序 - 兩大類的部落格https://marco79423.net/articles/%E6%B7%BA%E8%AB%87-python-%E7%9A%84%E6%8E%92%E5%BA%8F/ Python中sort、sorted高級排序技巧_謝軍的博客-CSDN博客_pythonsorted原地https://blog.csdn.net/hduxiejun/article/details/56495729 python - Sorting arrays in NumPy by column - Stack Overflowhttps://stackoverflow.com/questions/2828059/sorting-arrays-in-numpy-by-column
其它相關文章推薦 如果你想學習 Python 相關技術,可以參考看看下面的文章,Python 新手入門教學懶人包 Python 取得鍵盤輸入 input Python if else elif 用法教學與範例 Python for 迴圈 Python 建立多執行緒 thread Python 讀檔,讀取 txt 文字檔 Python PIL 讀取圖片並顯示 Python OpenCV resize 圖片縮放