一、了解Python中的排序函數
Python中有內置的排序函數sort(),可對數組進行排序。sort()函數默認使用升序排序。可以使用reverse參數將其改為降序排序。而對於二維數組,可以指定排序的關鍵字key(按照特定的列進行排序)。
# 創建一個二維數組 a = [[1, 2], [4, 1], [3, 6]] # 默認按第一個元素升序排列 a.sort() print(a) # [[1, 2], [3, 6], [4, 1]] # 按第二個元素升序排列 a.sort(key=lambda x: x[1]) print(a) # [[4, 1], [1, 2], [3, 6]] # 按第二個元素降序排列 a.sort(key=lambda x: x[1], reverse=True) print(a) # [[3, 6], [1, 2], [4, 1]]
二、多維排序
有時候我們需要按照多個元素進行排序,此時可以使用多次sort()函數或者使用sorted()函數。sorted()函數的參數與sort()函數相同,都有key和reverse參數。
# 創建一個三維數組 b = [[1, 2, 3], [2, 3, 1], [4, 1, 5]] # 按第一列升序排序,第二列升序排序 b_sorted = sorted(b, key=lambda x: (x[0], x[1])) print(b_sorted) # [[1, 2, 3], [2, 3, 1], [4, 1, 5]] # 按第一列降序排序,第二列升序排序 b_sorted = sorted(b, key=lambda x: (-x[0], x[1])) print(b_sorted) # [[4, 1, 5], [2, 3, 1], [1, 2, 3]]
三、自定義排序規則
如果需要使用自己定義的規則來排序,可以使用sort()和sorted()函數的key參數。key參數接受一個函數作為輸入,該函數接受一個數組元素作為輸入,返回一個用於排序的值。
# 創建一個字符串二維數組 c = [['a', 'b'], ['c'], ['d', 'e', 'f']] # 按元素數量升序排序 c_sorted = sorted(c, key=lambda x: len(x)) print(c_sorted) # [['c'], ['a', 'b'], ['d', 'e', 'f']] # 按元素數量降序排序 c_sorted = sorted(c, key=lambda x: len(x), reverse=True) print(c_sorted) # [['d', 'e', 'f'], ['a', 'b'], ['c']]
四、穩定性排序
在排序時,有時候需要保持相等元素的相對位置不變。這種排序被稱為穩定性排序。在Python的sort()和sorted()函數中,默認是穩定性排序。
# 創建一個具有相等元素的二維數組 d = [[1, 'a'], [2, 'b'], [2, 'c'], [3, 'd'], [1, 'e']] # 按第一列升序排序 d_sorted = sorted(d, key=lambda x: x[0]) print(d_sorted) # [[1, 'a'], [1, 'e'], [2, 'b'], [2, 'c'], [3, 'd']] # 按第二列升序排序 d_sorted = sorted(d, key=lambda x: x[1]) print(d_sorted) # [[1, 'a'], [2, 'b'], [2, 'c'], [3, 'd'], [1, 'e']]
五、代碼示例
# 創建一個具有相等元素的二維數組 d = [[1, 'a'], [2, 'b'], [2, 'c'], [3, 'd'], [1, 'e']] # 按第一列升序排序 d_sorted = sorted(d, key=lambda x: x[0]) print(d_sorted) # [[1, 'a'], [1, 'e'], [2, 'b'], [2, 'c'], [3, 'd']] # 按第二列升序排序 d_sorted = sorted(d, key=lambda x: x[1]) print(d_sorted) # [[1, 'a'], [2, 'b'], [2, 'c'], [3, 'd'], [1, 'e']]
原創文章,作者:FOKIH,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/318200.html