Python中sorted()函數(shù)之排序的利器詳解
前言
在 Python 中,sorted()
函數(shù)是用于對可迭代對象進(jìn)行排序的內(nèi)置函數(shù)。本文將深入探討 sorted()
函數(shù)的用法、工作原理以及常見應(yīng)用場景,可以更好地理解和應(yīng)用這個(gè)函數(shù)。
什么是 sorted() 函數(shù)?
sorted()
函數(shù)是 Python 中的一個(gè)內(nèi)置函數(shù),用于對可迭代對象進(jìn)行排序。該函數(shù)返回一個(gè)新的列表,其中包含了按照指定排序規(guī)則排序后的原始數(shù)據(jù)。
sorted()
函數(shù)的基本語法如下:
sorted(iterable, *, key=None, reverse=False)
iterable
是要排序的可迭代對象,例如列表、元組、集合等。key
是一個(gè)可選參數(shù),用于指定排序時(shí)要應(yīng)用的函數(shù)。reverse
是一個(gè)可選參數(shù),用于指定排序順序,True 表示降序,F(xiàn)alse 表示升序(默認(rèn)為 False)。
sorted() 函數(shù)的基本用法
先來看一些 sorted()
函數(shù)的基本用法。
1. 對列表進(jìn)行排序
numbers = [3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5] sorted_numbers = sorted(numbers) print(sorted_numbers) # [1, 1, 2, 3, 3, 4, 5, 5, 5, 6, 9]
在這個(gè)示例中,對列表 numbers
進(jìn)行排序,并將排序后的結(jié)果存儲(chǔ)在新列表 sorted_numbers
中。
2. 對字符串進(jìn)行排序
text = "python" sorted_text = sorted(text) print(sorted_text) # ['h', 'n', 'o', 'p', 't', 'y']
在這個(gè)示例中,對字符串 text
進(jìn)行排序,按照字母順序?qū)⒆址指畛蓡蝹€(gè)字符,并將排序后的結(jié)果存儲(chǔ)在新列表 sorted_text
中。
3. 對集合進(jìn)行排序
fruits = {"apple", "banana", "orange", "pineapple", "grape"} sorted_fruits = sorted(fruits) print(sorted_fruits) # ['apple', 'banana', 'grape', 'orange', 'pineapple']
在這個(gè)示例中,對集合 fruits
進(jìn)行排序,按照字母順序?qū)⒓显嘏判?,并將排序后的結(jié)果存儲(chǔ)在新列表 sorted_fruits
中。
sorted() 函數(shù)的常見應(yīng)用場景
sorted()
函數(shù)在 Python 編程中有許多應(yīng)用場景,以下是一些常見的用法:
1. 自定義排序規(guī)則
sorted()
函數(shù)通過指定 key
參數(shù)來定義自定義排序規(guī)則。
numbers = [3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5] sorted_numbers = sorted(numbers, key=lambda x: x % 3) print(sorted_numbers) # [3, 6, 9, 3, 1, 4, 1, 5, 2, 5, 5]
在這個(gè)示例中,定義了一個(gè)匿名函數(shù)作為 key
參數(shù),按照元素對 3 取余的結(jié)果進(jìn)行排序,從而實(shí)現(xiàn)了自定義的排序規(guī)則。
2. 排序字典
sorted()
函數(shù)也可以用于對字典的鍵或值進(jìn)行排序。
my_dict = {'a': 3, 'b': 1, 'c': 4, 'd': 2} sorted_keys = sorted(my_dict.keys()) print(sorted_keys) # ['a', 'b', 'c', 'd'] sorted_values = sorted(my_dict.values()) print(sorted_values) # [1, 2, 3, 4]
在這個(gè)示例中,分別對字典的鍵和值進(jìn)行排序,并將排序后的結(jié)果存儲(chǔ)在新列表中。
3. 復(fù)雜對象的排序
sorted()
函數(shù)也可以用于對復(fù)雜對象的列表進(jìn)行排序,例如元組、對象列表等。
# 對元組列表按照第二個(gè)元素進(jìn)行排序 data = [(1, 3), (2, 1), (3, 4), (4, 2)] sorted_data = sorted(data, key=lambda x: x[1]) print(sorted_data) # [(2, 1), (1, 3), (4, 2), (3, 4)]
在這個(gè)示例中,定義了一個(gè)匿名函數(shù)作為 key
參數(shù),按照元組的第二個(gè)元素進(jìn)行排序,從而實(shí)現(xiàn)了對元組列表的排序。
4. 指定排序順序
除了使用 key
參數(shù)外,sorted()
函數(shù)還提供了 reverse
參數(shù),用于指定排序順序,即升序或降序。
numbers = [3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5] sorted_numbers_asc = sorted(numbers) sorted_numbers_desc = sorted(numbers, reverse=True) print(sorted_numbers_asc) # [1, 1, 2, 3, 3, 4, 5, 5, 5, 6, 9] print(sorted_numbers_desc) # [9, 6, 5, 5, 5, 4, 3, 3, 2, 1, 1]
在這個(gè)示例中,分別使用 sorted()
函數(shù)的默認(rèn)排序順序和指定 reverse=True
參數(shù)的排序順序,得到了升序和降序排列的結(jié)果。
5. 排序穩(wěn)定性
Python 的排序算法保證了排序的穩(wěn)定性,即具有相同鍵值的元素在排序后的相對位置保持不變。
data = [('a', 3), ('b', 1), ('c', 3), ('d', 2)] sorted_data = sorted(data, key=lambda x: x[1]) print(sorted_data) # [('b', 1), ('d', 2), ('a', 3), ('c', 3)]
在這個(gè)示例中,元組 ('a', 3)
和 ('c', 3)
在排序后的結(jié)果中保持了原有的順序,這就是排序的穩(wěn)定性。
6. 原地排序
除了返回一個(gè)新的列表外,sorted()
函數(shù)還可以直接對原始數(shù)據(jù)進(jìn)行排序,使用 key
和 reverse
參數(shù)來指定排序規(guī)則。
numbers = [3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5] numbers.sort(reverse=True) print(numbers) # [9, 6, 5, 5, 5, 4, 3, 3, 2, 1, 1]
在這個(gè)示例中,使用列表的 sort()
方法對原始數(shù)據(jù)進(jìn)行排序,指定了 reverse=True
參數(shù),實(shí)現(xiàn)了降序排序。
總結(jié)
sorted()
函數(shù)是 Python 中一個(gè)非常有用的內(nèi)置函數(shù),用于對可迭代對象進(jìn)行排序。通過合理地應(yīng)用 sorted()
函數(shù),可以實(shí)現(xiàn)對各種數(shù)據(jù)類型的排序操作,包括列表、字符串、集合等。了解 sorted()
函數(shù)的使用方法和參數(shù)選項(xiàng),可以更靈活地處理數(shù)據(jù),提高代碼的效率和可維護(hù)性。希望本文提供的示例和解釋能夠幫助大家更好地理解和應(yīng)用 sorted()
函數(shù),在實(shí)際開發(fā)中發(fā)揮更大的作用。
到此這篇關(guān)于Python中sorted()函數(shù)之排序利器的文章就介紹到這了,更多相關(guān)Python中sorted()函數(shù)排序內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python 限制線程的最大數(shù)量的方法(Semaphore)
今天小編就為大家分享一篇Python 限制線程的最大數(shù)量的方法(Semaphore),具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-02-02python實(shí)現(xiàn)登錄與注冊系統(tǒng)
這篇文章主要為大家詳細(xì)介紹了python實(shí)現(xiàn)登錄與注冊系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-11-11Python?pycharm讀取文件相對路徑與絕對路徑的方法
這篇文章主要給大家介紹了關(guān)于Python?pycharm讀取文件相對路徑與絕對路徑的方法,絕對路徑就是文件的真正存在的路徑,是指從硬盤的根目錄(盤符)開始,進(jìn)行一級級目錄指向文件,相對路徑就是以當(dāng)前文件為基準(zhǔn)進(jìn)行一級級目錄指向被引用的資源文件,需要的朋友可以參考下2023-12-12淺談Keras的Sequential與PyTorch的Sequential的區(qū)別
這篇文章主要介紹了淺談Keras的Sequential與PyTorch的Sequential的區(qū)別,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-06-06Python初學(xué)時(shí)購物車程序練習(xí)實(shí)例(推薦)
下面小編就為大家?guī)硪黄狿ython初學(xué)時(shí)購物車程序練習(xí)實(shí)例(推薦)。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-08-08