一溪厘、修改原列表嘹履,不新建列表的排序
import random
a = [20,30,10,40]
a.sort() #列表的sort()函數(shù)方法谒养,默認(rèn)升序排序
print(a) #結(jié)果:[10, 20, 30, 40]
a.sort(reverse=True) #列表的sort()函數(shù)方法,reverse=True,表示降序排序
print(a) #結(jié)果:[40, 30, 20, 10]
random.shuffle(a) #shuffle(a)方法掰烟,打亂列表a的順序
print(a)
二守屉、新建列表的排序
通過內(nèi)置函數(shù)sorted()進(jìn)行排序偏竟,這個方法返回新列表庭惜,不對原列表做修改这揣。
只要是內(nèi)置函數(shù)悬槽,就可以直接使用怀吻,不用對象調(diào)用
a = [20,30,10,40]
print(id(a)) #2028080208392
a=sorted(a) #內(nèi)置的sorted(a)函數(shù)方法,創(chuàng)建新的列表初婆,默認(rèn)升序排序
print(id(a)) #2028080205960
print(a) #結(jié)果:[10, 20, 30, 40]
b = [20,30,10,40]
b = sorted(b,reverse=True) #reverse=True,表示降序排序
print(b) #結(jié)果:[40, 30, 20, 10]
三蓬坡、reversed()返回迭代器
內(nèi)置函數(shù)reversed()也支持進(jìn)行逆序排列,與列表對象的reverse()方法不同的是磅叛,內(nèi)置函數(shù)
reversed()不對原列表做任何修改屑咳,只是返回一個逆序排列的迭代器對象
a = [20,30,10,40]
c=reversed(a)
print(list(c)) #結(jié)果:[40, 10, 30, 20]
print(list(c)) #結(jié)果:[]
注:我們打印輸出 c 發(fā)現(xiàn)提示是:list_reverseiterator。也就是一個迭代對象弊琴。同時兆龙,我們使用
list(c)進(jìn)行輸出,發(fā)現(xiàn)只能使用一次敲董。第一次輸出了元素紫皇,第二次為空慰安。那是因?yàn)榈鷮ο?在第一次時已經(jīng)遍歷結(jié)束了,第二次不能再使用聪铺。
四化焕、列表相關(guān)的其他內(nèi)置函數(shù)
max() 求列表的最大值(僅針對數(shù)值類型的列表)
min() 求列表的最小值(僅針對數(shù)值類型的列表)
sum() 求列表的數(shù)值的總和(僅針對數(shù)值類型的列表)
a = [20,30,10,40]
print(max(a)) #結(jié)果:40
print(min(a)) #結(jié)果:10
print(sum(a)) #結(jié)果:100
sort()方法和sorted()方法都可以傳入key=func自定義的排序函數(shù)
import os
repoert_list = os.listdir('./report')
#e代表原列表repoert_list里的每個元素
repoert_list.sort(key=lambda e: os.path.getatime(os.path.join('./report',e)),reverse=False)
print(repoert_list[-1])
#結(jié)果:20210405-144806_resutl.html
repoert_list2 = os.listdir('./report')
#e代表原列表repoert_list里的每個元素
repoert_list2=sorted(repoert_list2,key=lambda e: os.path.getatime(os.path.join('./report',e)))
print(repoert_list2[-1])
#結(jié)果:20210405-144806_resutl.html
有結(jié)果得知,兩次的結(jié)果一致铃剔。
最后編輯于 :
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者