欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

前言

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

1、sort()方法的使用

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

1.1 基礎操作

語法格式:

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

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

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

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

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

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

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

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

注意:

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

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

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

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

案例1:使用內置函數進行排序

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

案例2:使用匿名函數進行排序

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

案例3:使用自定義函數進行排序

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

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

2、sorted()函數的使用

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

2.1 基礎操作

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

reverse=False,升序排序,默認不寫為升序排序

reverse=True,降序排序

案例:

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

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

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

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

語法格式:sorted(可迭代對象,reverse=,key=函數名)無論是sort()方法還是sorted()函數,都可以接受一個key參數,用于指定一個函數,這個函數會在每個列表元素上調用,排序將基于返回的結果進行。

案例:

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

# 對包含元組的列表按第二個元素排序
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')]

總結:

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

3、擴展:排序案例模板代碼

我們在日常開發(fā)中,經常會將一些數據,如:文本、圖片、視頻、音頻等按順序命名存放在某個文件夾下,當需要通過python來處理這些數據時,通常會獲取每個文件的路徑并存放到一個列表中,這時我們若對這個列表進行排序,會出現一些問題,如下:

問題案例:

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)

輸出結果:

['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']

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

解決方法模板代碼:

# 對列表中的元素進行升序排序
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']

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

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

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

# 兩種方法返回的結果相同

輸出結果:

['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']

總結 

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

相關文章

  • Ubuntu安裝Jupyter Notebook教程

    Ubuntu安裝Jupyter Notebook教程

    這篇文章主要為大家詳細介紹了Ubuntu安裝Jupyter Notebook教程,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-10-10
  • Python正則表達式匹配中文用法示例

    Python正則表達式匹配中文用法示例

    這篇文章主要介紹了Python正則表達式匹配中文用法,結合實例形式分析了Python針對中文的正則與文件操作相關技巧,需要的朋友可以參考下
    2017-01-01
  • Python將圖片轉為漫畫風格的示例

    Python將圖片轉為漫畫風格的示例

    本文主要介紹了Python將圖片轉為漫畫風格的示例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-04-04
  • Python預測2020高考分數和錄取情況

    Python預測2020高考分數和錄取情況

    這篇文章主要介紹了Python預測2020高考分數和錄取情況可能是這樣,本文通過示例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-07-07
  • Tensorflow2.1實現Fashion圖像分類示例詳解

    Tensorflow2.1實現Fashion圖像分類示例詳解

    這篇文章主要為大家介紹了Tensorflow2.1實現Fashion圖像分類示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-11-11
  • python同時給兩個收件人發(fā)送郵件的方法

    python同時給兩個收件人發(fā)送郵件的方法

    這篇文章主要介紹了python同時給兩個收件人發(fā)送郵件的方法,涉及Python使用smtplib包發(fā)送郵件的相關技巧,需要的朋友可以參考下
    2015-04-04
  • django 解決自定義序列化返回處理數據為null的問題

    django 解決自定義序列化返回處理數據為null的問題

    這篇文章主要介紹了django 解決自定義序列化返回處理數據為null的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-05-05
  • Python?async+request與async+aiohttp實現異步網絡請求探索

    Python?async+request與async+aiohttp實現異步網絡請求探索

    這篇文章主要介紹了Python?async+request與async+aiohttp實現異步網絡請求探索,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習吧
    2022-10-10
  • python 遍歷可迭代對象的實現方法

    python 遍歷可迭代對象的實現方法

    本文主要介紹了python 遍歷可迭代對象的實現方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-02-02
  • python3訪問sina首頁中文的處理方法

    python3訪問sina首頁中文的處理方法

    如果用python3的urllib或python2的urllib2訪問網頁,都不能得到正確的中文字符串,看下面的解決方法
    2014-02-02

最新評論