1. 程式人生 > >Python3:排序函數sort() 和 sorted() 之介紹

Python3:排序函數sort() 和 sorted() 之介紹

需要 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() 之介紹