Python3:排序函數sort() 和 sorted() 之介紹
阿新 • • 發佈:2018-10-25
需要 lam 個數 lambda sort 實現 lse 並不會 包含
今天來講一下Python中的排序函數。Python中有2個內建的排序函數,分別為sort() 和 sorted()
下面介紹分別介紹一下2個函數:
1.有一個列表 :a=[1,4,5,88,0,7],想要實現排序功能,可以使用sort() 和 sorted();
a.sort() #默認升序排列
print(a) 輸出:[0, 1, 4, 5, 7, 88]
a.sort(reverse=True) #reverse=True,降序排列。默認FALSE:升序;
print(a) 輸出:[88, 7, 5, 4, 1, 0]
b=sorted(a,reverse=True) #有返回值,需要用一個變量進行接收
print(b) 輸出:[88, 7, 5, 4, 1, 0]
在這裏,可以看出sort() 是沒有返回值的,而sorted()需要用一個變量進行接收,它並不會修改原有的列表
2. 參數key的應用:
什麽情況下使用:當列表中的元素不再單一,若列表中包含元組或字典
如何應用: 使用lambda代表根據什麽元素或key值進行排序
# 列表中包含元組,通過元組中某個元素進行排序;lambda x:x[元素位置]
stu=[("winnie","A",12),("lucy","C",16),("john","B",14)]
stu.sort(key=lambda x:x[2])
print(stu)
s=sorted(stu,key=lambda x:x[1],reverse=True) #默認false ,升序
print(s)
輸出:
[(‘winnie‘, ‘A‘, 12), (‘john‘, ‘B‘, 14), (‘lucy‘, ‘C‘, 16)]
[(‘lucy‘, ‘C‘, 16), (‘john‘, ‘B‘, 14), (‘winnie‘, ‘A‘, 12)]
# 列表中包含字典,按照字典中某個key值進行排序 lambda x:x[key值]
l1=[{‘name0‘:‘李麗‘,‘age‘:40}, {‘name0‘:‘張那‘,‘age‘:30},{‘name0‘:‘王原‘,‘age‘:50},{‘name0‘:‘王麗萍‘,‘age‘:50}]
l2=sorted(l1,key=lambda x:x[‘age‘])
print(l2)
結果:[{‘name0‘: ‘張那‘, ‘age‘: 30}, {‘name0‘: ‘李麗‘, ‘age‘: 40}, {‘name0‘: ‘王原‘, ‘age‘: 50}, {‘name0‘: ‘王麗萍‘, ‘age‘: 50}]
3.什麽情況下不能使用sort()函數?
sort()函數是list的內建函數,不能針對字典等叠代,系統會直接報錯 AttributeError: ‘dict‘ object has no attribute ‘sort‘
4.sorted()函數使用舉例:
# 有一個字典如下所示:
# 其中key表示數字,value表示這個數字出現的次數,比如1:2表示數字1出現了2次。
# 請針對這個字典按照出現的次數從多到少進行排序。
dict1={1: 2, 2: 2, 3: 1, 4: 7, 5: 6, 6: 4, 7: 3, 8: 2, 9: 1}
d1=sorted(dict1.values(),reverse=True)#按values值進行排序
d2=sorted(dict1) #
d3=sorted(dict1.keys(),reverse=True) #按key值進行排序
print(d1)
print(d2)
print(d3)
輸出:
[7, 6, 4, 3, 2, 2, 2, 1, 1]
[1, 2, 3, 4, 5, 6, 7, 8, 9]
[9, 8, 7, 6, 5, 4, 3, 2, 1]
碎碎念:感覺sorted()函數此處的應用有點雞肋,輸出值是列表~
Python3:排序函數sort() 和 sorted() 之介紹