Python中的sorted和sort都是用于對(duì)列表進(jìn)行排序的函數(shù),它們的使用方法類似,但是它們的實(shí)現(xiàn)方式和結(jié)果輸出方式有所不同。
sorted函數(shù)
_x000D_sorted函數(shù)是一個(gè)內(nèi)置函數(shù),它接受一個(gè)可迭代對(duì)象作為參數(shù),返回一個(gè)新的已排序的列表。sorted函數(shù)不會(huì)改變?cè)瓉?lái)的列表,而是返回一個(gè)新的已排序的列表。
_x000D_sorted函數(shù)的語(yǔ)法格式如下:
_x000D_sorted(iterable, key=None, reverse=False)
_x000D_其中,iterable表示要排序的可迭代對(duì)象,key表示用于排序的關(guān)鍵字函數(shù),reverse表示是否降序排序。
_x000D_sort方法
_x000D_sort方法是列表對(duì)象的一個(gè)方法,它用于對(duì)列表進(jìn)行排序。sort方法會(huì)改變?cè)瓉?lái)的列表,而不是返回一個(gè)新的已排序的列表。
_x000D_sort方法的語(yǔ)法格式如下:
_x000D_list.sort(key=None, reverse=False)
_x000D_其中,key表示用于排序的關(guān)鍵字函數(shù),reverse表示是否降序排序。
_x000D_sorted和sort的區(qū)別
_x000D_- sorted函數(shù)返回一個(gè)新的已排序的列表,而sort方法會(huì)改變?cè)瓉?lái)的列表。
_x000D_- sorted函數(shù)可以對(duì)任何可迭代對(duì)象進(jìn)行排序,而sort方法只能對(duì)列表進(jìn)行排序。
_x000D_- sorted函數(shù)可以接受一個(gè)關(guān)鍵字函數(shù)作為參數(shù),用于自定義排序規(guī)則,而sort方法只能使用默認(rèn)的排序規(guī)則。
_x000D_問(wèn)答擴(kuò)展
_x000D_Q1:sorted函數(shù)和sort方法的時(shí)間復(fù)雜度是多少?
_x000D_A1:sorted函數(shù)和sort方法的時(shí)間復(fù)雜度都是O(n log n),其中n為列表的長(zhǎng)度。
_x000D_Q2:如何使用sorted函數(shù)對(duì)字典進(jìn)行排序?
_x000D_A2:可以使用字典的items方法將字典轉(zhuǎn)換為可迭代對(duì)象,然后使用sorted函數(shù)進(jìn)行排序。例如:
_x000D_ _x000D_d = {'a': 3, 'b': 1, 'c': 2}
_x000D_sorted_d = sorted(d.items(), key=lambda x: x[1])
_x000D_print(sorted_d)
_x000D_# 輸出:[('b', 1), ('c', 2), ('a', 3)]
_x000D_ _x000D_Q3:如何使用sort方法對(duì)列表進(jìn)行降序排序?
_x000D_A3:可以將sort方法的reverse參數(shù)設(shè)置為True。例如:
_x000D_ _x000D_lst = [3, 1, 2]
_x000D_lst.sort(reverse=True)
_x000D_print(lst)
_x000D_# 輸出:[3, 2, 1]
_x000D_ _x000D_Q4:sorted函數(shù)和sort方法的穩(wěn)定性是什么意思?
_x000D_A4:穩(wěn)定性指的是排序算法在排序過(guò)程中是否會(huì)改變相等元素的相對(duì)位置。穩(wěn)定的排序算法會(huì)保持相等元素的相對(duì)位置不變,而不穩(wěn)定的排序算法則不保證相等元素的相對(duì)位置。sorted函數(shù)使用的是穩(wěn)定的排序算法,而sort方法使用的是不穩(wěn)定的排序算法。
_x000D_