最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

python中常用排序操作sort方法和sorted函數(shù)的使用超詳細(xì)講解(內(nèi)置模板代碼!)

 更新時(shí)間:2025年02月07日 09:38:35   作者:盲敲代碼的阿豪  
這篇文章主要介紹了Python中的排序方法,包括sort()方法和sorted()函數(shù)的使用,sort()方法用于列表,對原列表進(jìn)行排序,文章還提供了一些排序案例模板代碼,以解決實(shí)際問題,需要的朋友可以參考下

前言

在Python中,排序的方法有多種,其中最常用的是使用內(nèi)置的 sort() 方法和 sorted() 函數(shù),接下來我將通過各種案例帶領(lǐng)大家輕松學(xué)會(huì)這兩種方法,同時(shí)還會(huì)擴(kuò)展一些實(shí)用的排序案例模板代碼。

1、sort()方法的使用

sort() 方法是列表(List)對象的一個(gè)方法,它會(huì)直接對原列表進(jìn)行排序,不返回新的列表。這意味著它會(huì)改變原列表的順序,該方法只能作用于列表。

1.1 基礎(chǔ)操作

語法格式:

列表對象.sort(reverse=False),升序排序,默認(rèn)不寫reverse參數(shù),為升序排序

列表對象.sort(reverse=True),降序排序

案例1:讓列表中的元素升序排序

# 列表中的元素都為為數(shù)字類型
my_list = [5, 2, 9, 1, 5, 6]
my_list.sort()  # 默認(rèn)升序排序,
print(my_list)  # 輸出: [1, 2, 5, 5, 6, 9]

# 列表中的元素都為字符串類型
words = ["apple", "orange", "banana", "pear"]
words.sort()
print(words)  # 輸出: ['apple', 'banana', 'orange', 'pear']

案例2:讓列表中的元素降序排序

# 列表中的元素都為為數(shù)字類型
my_list = [5, 2, 9, 1, 5, 6]
my_list.sort(reverse=True)  # 降序排序,可以傳遞 reverse=True 參數(shù)
print(my_list)  # 輸出: [9, 6, 5, 5, 2, 1]

# 列表中的元素都為字符串類型
words = ["apple", "orange", "banana", "pear"]
words.sort(reverse=True)
print(words)  # 輸出: ['pear', 'orange', 'banana', 'apple']

注意:

  • 列表中的元素必須為同一數(shù)據(jù)類型,才可以進(jìn)行排序,否則會(huì)報(bào)錯(cuò)
  • sort 方法只能作用于列表對象,不能直接跟在數(shù)據(jù)后面,否則會(huì)返回None;如:
# 錯(cuò)誤使用
my_list = [5, 2, 9, 1, 5, 6].sort() # sort方法不能直接跟在數(shù)據(jù)后面使用
print(my_list) # 輸出:None

# 正確使用
my_list = [5, 2, 9, 1, 5, 6]
my_list.sort()  # 默認(rèn)升序排序,
print(my_list)  # 輸出: [1, 2, 5, 5, 6, 9]
  • 當(dāng)列表中的元素為字符串時(shí),sort() 方法會(huì)根據(jù)字符串的 Unicode 碼點(diǎn)進(jìn)行排序,具體來說,字符串的排序是逐字符比較的:
    1、比較兩個(gè)字符串的第一個(gè)字符,根據(jù)它們的 Unicode 碼點(diǎn)值排序。
    2、如果第一個(gè)字符相同,則比較第二個(gè)字符,依此類推。
    3、如果所有字符都相同,則兩個(gè)字符串被認(rèn)為是相等的。

1.2 操作進(jìn)階(自定義排序的對象)

語法格式:列表對象.sort(reverse=,key=函數(shù)名)我們通過key參數(shù)接收一個(gè)函數(shù),該函數(shù)會(huì)在列表中的每個(gè)元素上調(diào)用,通過對函數(shù)返回的結(jié)果進(jìn)行排序;該函數(shù)可以是匿名函數(shù)、自定義函數(shù)或內(nèi)置函數(shù)。

案例1:使用內(nèi)置函數(shù)進(jìn)行排序

# 按字符串長度升序排序(適用于字符串列表)
words = ["apple", "banana", "cherry", "date"]
words.sort(key=len)  # key后面跟上函數(shù)名
print(words)  # 輸出: ['date', 'apple', 'banana', 'cherry']

案例2:使用匿名函數(shù)進(jìn)行排序

# 對包含元組的列表按第二個(gè)元素排序
tuple_list = [(1, 'one'), (2, 'two'), (3, 'three'), (4, 'four')]
tuple_list.sort(reverse=True,key=lambda x: x[1]) # 直接在key后面跟上匿名函數(shù)
print(tuple_list)  # 輸出: [(4, 'four'), (1, 'one'), (3, 'three'), (2, 'two')]

案例3:使用自定義函數(shù)進(jìn)行排序

# 自定義函數(shù)
def custom(s): # 這里s用于接收列表中的元素
    return len(s) # 返回列表中每個(gè)元素的長度,通過長度進(jìn)行排序

words = ["apple", "banana", "cherry", "date"]
words.sort(key=custom) 
print(words) # 輸出: ['date', 'apple', 'banana', 'cherry']

2、sorted()函數(shù)的使用

sorted()函數(shù)是Python的一個(gè)內(nèi)置函數(shù),它會(huì)返回一個(gè)新的已排序列表,而不會(huì)改變原列表,sorted函數(shù)功能強(qiáng)大,可以對所有可迭代對象,如:字符串、元祖等進(jìn)行排序,并返回一個(gè)排序后的列表

2.1 基礎(chǔ)操作

語法格式:sorted(可迭代對象,reverse=)參數(shù)說明:

reverse=False,升序排序,默認(rèn)不寫為升序排序

reverse=True,降序排序

案例:

# 對列表進(jìn)行升序排序
my_list = [5, 2, 9, 1, 5, 6]
sorted_list = sorted(my_list)  # 默認(rèn)升序排序
print(sorted_list)  # 輸出: [1, 2, 5, 5, 6, 9]
print(my_list)  # 輸出: [5, 2, 9, 1, 5, 6],原列表未被改變

# 如果你想降序排序,可以傳遞 reverse=True 參數(shù)
sorted_list_desc = sorted(my_list, reverse=True)
print(sorted_list_desc)  # 輸出: [9, 6, 5, 5, 2, 1]

# 對字符串進(jìn)行升序排序
strs = '136297'
new_strs = sorted(strs)
print(new_strs) # 輸出:['1', '2', '3', '6', '7', '9'],返回了一個(gè)排序后的列表

2.2 操作進(jìn)行(自定義排序的對象)

語法格式:sorted(可迭代對象,reverse=,key=函數(shù)名)無論是sort()方法還是sorted()函數(shù),都可以接受一個(gè)key參數(shù),用于指定一個(gè)函數(shù),這個(gè)函數(shù)會(huì)在每個(gè)列表元素上調(diào)用,排序?qū)⒒诜祷氐慕Y(jié)果進(jìn)行。

案例:

# 按字符串長度排序(適用于字符串列表)
words = ["apple", "banana", "cherry", "date"]
sorted_words = sorted(words, key=len)  # key后面跟上函數(shù)名
print(sorted_words)  # 輸出: ['date', 'apple', 'banana', 'cherry']

# 對包含元組的列表按第二個(gè)元素排序
tuple_list = [(1, 'one'), (2, 'two'), (3, 'three'), (4, 'four')]
sorted_tuple_list = sorted(tuple_list, key=lambda x: x[1])
print(sorted_tuple_list)  # 輸出: [(4, 'four'), (1, 'one'), (3, 'three'), (2, 'two')]

總結(jié):

  • sort方法和sorted()函數(shù)的使用操作相同,但sort()方法只能作用于列表,而sorted()方法可以作用于所有可迭代對象
  • sort()方法是在原列表對象上進(jìn)行排序,不會(huì)生成新的列表;而sorted()函數(shù)在對可迭代對象進(jìn)行排序后,會(huì)生成一個(gè)新的列表

3、擴(kuò)展:排序案例模板代碼

我們在日常開發(fā)中,經(jīng)常會(huì)將一些數(shù)據(jù),如:文本、圖片、視頻、音頻等按順序命名存放在某個(gè)文件夾下,當(dāng)需要通過python來處理這些數(shù)據(jù)時(shí),通常會(huì)獲取每個(gè)文件的路徑并存放到一個(gè)列表中,這時(shí)我們?nèi)魧@個(gè)列表進(jìn)行排序,會(huì)出現(xiàn)一些問題,如下:

問題案例:

image_paths = ['D:/image/1.png','D:/image/3.png','D:/image/5.png','D:/image/2.png','D:/image/4.png',
               'D:/image/10.png','D:/image/7.png','D:/image/8.png','D:/image/9.png','D:/image/6.png',
               'D:/image/11.png']
image_paths.sort() # 升序排序
print(image_paths)

輸出結(jié)果:

['D:/image/1.png', 'D:/image/10.png', 'D:/image/11.png', 'D:/image/2.png', 'D:/image/3.png', 'D:/image/4.png', 'D:/image/5.png', 'D:/image/6.png', 'D:/image/7.png', 'D:/image/8.png', 'D:/image/9.png']

說明:從上面的結(jié)果可以看到,我們原本是打算將路徑按1、2、3、4…進(jìn)行升序排序,但返回的結(jié)果卻不是如此,造成這種問題的原因是因?yàn)閟ort()方法和sorted()函數(shù)在對字符串進(jìn)行排序的時(shí)候是按每個(gè)字符的unicode碼點(diǎn)值進(jìn)行排序的,因此我們需要對數(shù)據(jù)做一些處理,再進(jìn)行排序,這里可以使用key參數(shù)來解決這個(gè)問題

解決方法模板代碼:

# 對列表中的元素進(jìn)行升序排序
image_paths = ['D:/image/1.png','D:/image/3.png','D:/image/5.png','D:/image/2.png','D:/image/4.png',
               'D:/image/10.png','D:/image/7.png','D:/image/8.png','D:/image/9.png','D:/image/6.png',
               'D:/image/11.png']

# 自定義函數(shù)
def sort_key(s):
    # 使用切片獲取數(shù)字部分,并將其轉(zhuǎn)換為整數(shù)進(jìn)行排序
    return int(''.join(filter(str.isdigit, s)))

# 1、使用soted()函數(shù)
new_image_paths = sorted(image_paths, key=sort_key)
print(new_image_paths)

# 2、使用sort()方法
image_paths.sort(key=sort_key)
print(image_paths)

# 兩種方法返回的結(jié)果相同

輸出結(jié)果:

['D:/image/1.png', 'D:/image/2.png', 'D:/image/3.png', 'D:/image/4.png', 'D:/image/5.png', 'D:/image/6.png', 'D:/image/7.png', 'D:/image/8.png', 'D:/image/9.png', 'D:/image/10.png', 'D:/image/11.png']
['D:/image/1.png', 'D:/image/2.png', 'D:/image/3.png', 'D:/image/4.png', 'D:/image/5.png', 'D:/image/6.png', 'D:/image/7.png', 'D:/image/8.png', 'D:/image/9.png', 'D:/image/10.png', 'D:/image/11.png']

總結(jié) 

到此這篇關(guān)于python中常用排序操作sort方法和sorted函數(shù)使用的文章就介紹到這了,更多相關(guān)python排序sort方法和sorted函數(shù)用法內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • python文件絕對路徑寫法介紹(windows)

    python文件絕對路徑寫法介紹(windows)

    今天小編就為大家分享一篇python文件絕對路徑寫法介紹(windows),具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-12-12
  • Python對象轉(zhuǎn)換為json的方法步驟

    Python對象轉(zhuǎn)換為json的方法步驟

    這篇文章主要介紹了Python對象轉(zhuǎn)換為json的方法步驟,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-04-04
  • Python驗(yàn)證用戶密碼是否規(guī)范腳本示例

    Python驗(yàn)證用戶密碼是否規(guī)范腳本示例

    對用戶密碼的強(qiáng)度進(jìn)行校驗(yàn),要求用戶密碼達(dá)到一定的強(qiáng)度,符合安全性要求,這篇文章主要給大家介紹了關(guān)于Python驗(yàn)證用戶密碼是否規(guī)范的相關(guān)資料,需要的朋友可以參考下
    2024-05-05
  • Django基于ORM操作數(shù)據(jù)庫的方法詳解

    Django基于ORM操作數(shù)據(jù)庫的方法詳解

    這篇文章主要介紹了Django基于ORM操作數(shù)據(jù)庫的方法,結(jié)合實(shí)例形式總結(jié)分析了Django使用ORM操作數(shù)據(jù)庫的相關(guān)配置、增刪改查等相關(guān)操作技巧,需要的朋友可以參考下
    2018-03-03
  • Python開發(fā)常用五種循環(huán)方式的場景性能比較

    Python開發(fā)常用五種循環(huán)方式的場景性能比較

    Python是一門高級(jí)編程語言,其擁有多種循環(huán)方式,如for循環(huán)、while循環(huán)、do-while循環(huán)等。本文將逐個(gè)分析Python所有的循環(huán)執(zhí)行效率和適用場景,需要的可以參考一下
    2023-04-04
  • 深度學(xué)習(xí)小工程練習(xí)之tensorflow垃圾分類詳解

    深度學(xué)習(xí)小工程練習(xí)之tensorflow垃圾分類詳解

    這篇文章主要介紹了練習(xí)深度學(xué)習(xí)的一個(gè)小工程,代碼簡單明確,用來作為學(xué)習(xí)深度學(xué)習(xí)的練習(xí)很適合,對于有需要的朋友可以參考下,希望大家可以體驗(yàn)到深度學(xué)習(xí)帶來的收獲
    2021-04-04
  • python3編寫ThinkPHP命令執(zhí)行Getshell的方法

    python3編寫ThinkPHP命令執(zhí)行Getshell的方法

    這篇文章主要介紹了python3編寫ThinkPHP命令執(zhí)行Getshell的方法,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2019-02-02
  • 使用Python開發(fā)SQLite代理服務(wù)器的方法

    使用Python開發(fā)SQLite代理服務(wù)器的方法

    今天小編就為大家分享一篇使用Python開發(fā)SQLite代理服務(wù)器的方法,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-12-12
  • python實(shí)現(xiàn)將excel文件轉(zhuǎn)化成CSV格式

    python實(shí)現(xiàn)將excel文件轉(zhuǎn)化成CSV格式

    下面小編就為大家分享一篇python實(shí)現(xiàn)將excel文件轉(zhuǎn)化成CSV格式,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-03-03
  • Pytorch中torch.cat()函數(shù)舉例解析

    Pytorch中torch.cat()函數(shù)舉例解析

    一般torch.cat()是為了把多個(gè)tensor進(jìn)行拼接而存在的,下面這篇文章主要給大家介紹了關(guān)于Pytorch中torch.cat()函數(shù)舉例解析的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-12-12

最新評(píng)論

泉州市| 定结县| 南京市| 桃江县| 海盐县| 塘沽区| 安溪县| 浦城县| 乐东| 枣阳市| 武邑县| 赤城县| 常德市| 依兰县| 海口市| 临汾市| 嘉兴市| 仙游县| 咸阳市| 改则县| 长海县| 舞阳县| 孝感市| 兴隆县| 屏边| 海宁市| 深泽县| 介休市| 延寿县| 莱芜市| 永春县| 涿州市| 灵台县| 清远市| 内乡县| 石景山区| 隆子县| 牙克石市| 平遥县| 韶关市| 抚顺县|