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

python列表排序用?sort()和sorted()的區(qū)別

 更新時間:2022年03月22日 09:11:46   作者:寧萌Julie  
這篇文章主要介紹了python列表排序用?sort()和sorted()的區(qū)別,主要比較?Python?中用于列表排序的兩種函數(shù)?sort()?和?sorted(),選擇合適的排序函數(shù),下文詳細(xì)內(nèi)容需要的小伙伴可以參考一下

前言:

內(nèi)容提要:本文比較了 Python 中用于列表排序的兩種函數(shù) sort() 和 sorted(),幫助您選擇合適的排序函數(shù)。

對列表排序時,既可以用 List.sort(),也可以用 sorted(List),這兩個函數(shù)有什么不同呢?如何選擇?我以前常常分不清這兩個函數(shù),等到程序報錯了,才知道 sorted 寫成 sort 了,List 不能寫在 sort() 括號里。您是否也有這個困惑呢?那就一起通過例子來熟悉這兩個函數(shù)吧,以后就知道應(yīng)該怎么使用了。

1. 是否改變原列表

首先應(yīng)用 List.sort() 對列表排序,

代碼示例如下:

letters=['a','dc','ab','D']
print('before sort: letters:',letters)
result1=letters.sort()
print('after sort: result1:',result1)
print('after sort: letters:',letters)

運行結(jié)果為:

before sort: letters: ['a', 'dc', 'ab', 'D']
after sort: result1: None
after sort: letters: ['D', 'a', 'ab', 'dc']

可以看到,List.sort() 沒有返回值,而是直接改變了原列表。這既是優(yōu)點也是缺點。說它是優(yōu)點呢,有時不需要再使用原列表,直接修改原列表可以節(jié)約內(nèi)存空間,尤其當(dāng)這個列表很大時。而它的缺點也正是因為改了原列表,新手在程序設(shè)計時容易忽視這一點,在后續(xù)程序中錯誤地操作列表,導(dǎo)致得不到預(yù)計的結(jié)果。

再來看一下應(yīng)用 sorted(List) 對列表排序的效果,

代碼示例如下:

letters=['a','dc','ab','D']
print('before sorted: letters:',letters)
result2=sorted(letters)
print('after sorted: result2:',result2)
print('after sorted: letters:',letters)

運行結(jié)果為:

before sorted: letters: ['a', 'dc', 'ab', 'D']
after sorted: result2: ['D', 'a', 'ab', 'dc']
after sorted: letters: ['a', 'dc', 'ab', 'D']

可以看到,sorted(List) 返回一個排序好的新列表,原列表不變。

依據(jù)上述對比,在選擇排序函數(shù)時,我們需要考慮兩點:

  • 1.是否希望改變原列表,如果是,選擇 sort()。如果原列表不能修改,選擇 sorted()。
  • 2.注意使用函數(shù)的返回值,或者說排序好的列表存在哪里。比如代碼為 list2=list1.sort() 或者 function(list1.sort()),那么 list2 其實是 None,而不是排序好的列表。同理,function() 函數(shù)的輸入也是 None。list1 才是排序好的列表。

2.參數(shù)設(shè)置:key 和 reverse

看上面例子中列表 letters 的排序結(jié)果,發(fā)現(xiàn) D 居然排在 a 的前面?這是因為 ASCII 碼中大寫英文字母排在小寫英文字母的前面。那么,如果我們想實現(xiàn)按字母順序,不區(qū)分大小寫的排序,應(yīng)該怎么辦呢?

方法:可以設(shè)置 key 參數(shù),對 sort() 和 sorted() 都適用。

比如:設(shè)置key=str.lower,就是按字符的小寫字母形式排序。

代碼示例如下:

letters=['a','dc','ab','D']
letters.sort(key=str.lower)
print(letters)

運行結(jié)果為:

['a', 'ab', 'D', 'dc']

此外,默認(rèn)是按升序排列。也可以設(shè)置reverse=True,就是按降序排列。這一參數(shù)同樣是對 sort() 和 sorted() 都適用。下面的代碼示例同時設(shè)置了 key 和 reverse 參數(shù)。

letters=['a','dc','ab','D']
result=sorted(letters,key=str.lower,reverse=True)
print(result)

運行結(jié)果為:

['dc', 'D', 'ab', 'a']

3.輸入數(shù)據(jù)類型

List.sort() 是列表對象(object)的一個方法(method),因此只能用于列表。

sorted() 函數(shù)是 Python 語言的內(nèi)置函數(shù),可以用于 iterables,包括 列表(List),元組(Tuple),字典(Dict)等等。iterable 對象有一個特點,就是可以用在循環(huán) for 語句中(例如上面例子的列表 letters,可以用在 for 語句中:for e in letters:)。

下面我們來看看不同數(shù)據(jù)類型應(yīng)用 sorted() 函數(shù)的例子。需要注意的是,雖然 sorted() 的輸入可以有多種類型,但是輸出都是排序好的列表。

輸入為元組(Tuple)時:

letters=('a','dc','ab','D')
result=sorted(letters)
print(result)

運行結(jié)果為:

['D', 'a', 'ab', 'dc']

輸入為字符串(Str)時:

letters='dasf'
result=sorted(letters)
print(result)

運行結(jié)果為:

['a', 'd', 'f', 's']

從結(jié)果可以看出,輸入為字符串時,輸出為排序好的字符列表,單個字符為列表的一個元素。

輸入為字典(Dict)時:

letters={'b':1,'a':3,'d':2,'c':1}
result=sorted(letters)
print(result)

運行結(jié)果為:

['a', 'b', 'c', 'd']

從結(jié)果可以看出,sorted() 函數(shù)輸出的結(jié)果是對letters.key() 排序得到的列表。

參考:https://docs.python.org/3/howto/sorting.html

到此這篇關(guān)于python列表排序用 sort()和sorted()的區(qū)別的文章就介紹到這了,更多相關(guān)python列表排序內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 使用pandas的box_plot去除異常值

    使用pandas的box_plot去除異常值

    今天小編就為大家分享一篇使用pandas的box_plot去除異常值,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-12-12
  • python識別驗證碼圖片實例詳解

    python識別驗證碼圖片實例詳解

    這篇文章主要介紹了python識別驗證碼圖片實例詳解,需要的朋友可以參考下
    2020-02-02
  • Python使用DuckDB秒級處理超大Excel文件的終極指南

    Python使用DuckDB秒級處理超大Excel文件的終極指南

    你是否經(jīng)歷過這樣的絕望:雙擊打開一個 500MB 的 Excel 文件,看著鼠標(biāo)光標(biāo)變成旋轉(zhuǎn)的圓圈,內(nèi)存占用飆升,最后屏幕變白顯示未響應(yīng),本文將手把手教你如何利用 DuckDB 輕松讀取、查詢和分析超大 Excel 文件,需要的朋友可以參考下
    2026-02-02
  • Pytorch中使用ImageFolder讀取數(shù)據(jù)集時忽略特定文件

    Pytorch中使用ImageFolder讀取數(shù)據(jù)集時忽略特定文件

    這篇文章主要介紹了Pytorch中使用ImageFolder讀取數(shù)據(jù)集時忽略特定文件,具有一的參考價值需要的小伙伴可以參考一下,希望對你有所幫助
    2022-03-03
  • 使用python和yolo方法實現(xiàn)yolo標(biāo)簽自動標(biāo)注

    使用python和yolo方法實現(xiàn)yolo標(biāo)簽自動標(biāo)注

    本文介紹了基于YOLOv10的自動標(biāo)注方法,從初階的固定標(biāo)注到高階的基于YOLO檢測結(jié)果的自動標(biāo)注,兩者相比,高階方法顯著提高了標(biāo)注的準(zhǔn)確性,并減少了人工操作的時間,</P><P>
    2024-11-11
  • Python之os操作方法(詳解)

    Python之os操作方法(詳解)

    下面小編就為大家?guī)硪黄狿ython之os操作方法(詳解)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-06-06
  • python的pip配置的國內(nèi)鏡像的實現(xiàn)

    python的pip配置的國內(nèi)鏡像的實現(xiàn)

    本文主要介紹了python的pip配置的國內(nèi)鏡像的實現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2025-05-05
  • Python遍歷列表、元組、字典、集合的詳細(xì)代碼

    Python遍歷列表、元組、字典、集合的詳細(xì)代碼

    在 Python 中,列表(list)、元組(tuple)、字典(dict)和集合(set)都是可迭代對象(Iterable),遍歷的核心機(jī)制是 for...in 循環(huán),但根據(jù)它們底層數(shù)據(jù)結(jié)構(gòu)的差異,遍歷方式各有特色,下面我為你由淺入深地詳細(xì)梳理,需要的朋友可以參考下
    2026-07-07
  • Django上傳excel表格并將數(shù)據(jù)寫入數(shù)據(jù)庫的詳細(xì)步驟

    Django上傳excel表格并將數(shù)據(jù)寫入數(shù)據(jù)庫的詳細(xì)步驟

    這篇文章主要介紹了Django上傳excel表格并將數(shù)據(jù)寫入數(shù)據(jù)庫,將文件上傳到服務(wù)器指定路徑,其實很簡單,本文分三個步驟給大家詳細(xì)介紹,需要的朋友可以參考下
    2022-06-06
  • Python中最大遞歸深度值的探討

    Python中最大遞歸深度值的探討

    今天小編就為大家分享一篇關(guān)于Python中最大遞歸深度值的探討,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2019-03-03

最新評論

台州市| 镇雄县| 汉川市| 卓尼县| 宜川县| 灵丘县| 松潘县| 黄梅县| 辽阳县| 深泽县| 延川县| 蒙自县| 格尔木市| 林口县| 开远市| 全椒县| 封开县| 福安市| 海兴县| 南城县| 上蔡县| 界首市| 张家港市| 阳城县| 太谷县| 舞钢市| 长泰县| 桃园市| 田阳县| 锡林郭勒盟| 信宜市| 新密市| 公主岭市| 藁城市| 若尔盖县| 关岭| 柏乡县| 调兵山市| 虹口区| 延长县| 石阡县|