① python里students.sort(key=lambda x: x['name']),兩個x的意思是什麼
lambda x:x ['name']是一個匿名函數(俗稱lambda表達式),冒號前面的x是函數的參數,sort函數會把列表的每個字典傳給x,而x['name']是函數的函數體,意思是返回字典x的name鍵的值。
這個代碼的意思就是按列表中每個字典的name鍵的升序來對列表排序。
其實,students.sort(key=lambda x:x['name'])就是相當於這樣:
#先定義一個函數
def k(x):return x['name']
#key按關鍵字傳參排序
students.sort(key=k)
② Python 二維列表,用sorted函數怎麼多重排序
在歷返歷Python中,使用sorted函數對二維列表進行多重排序可以使用key參數。key參數接收一個函數,該函數接收一個列表元素作為參數世皮,返回一個用肢搜於排序的值。可以使用lambda函數來實現多重排序,例如:
sorted_list = sorted(my_list, key=lambda x:(x[1],x[2],x[0]))
這將按第1個元素,第2個元素,第3個元素的順序對二維列表進行排序。
③ python的lambda形式的理解
lambda 創建一個匿名函數。冒號前面是傳入參數,後面是一個處理傳入參數的單行表達式。
調用lambda函數返回表達式的結果。
list的sort 同於內建函數sorted。它有三個參數cmp,key,reverse,均有默認值。
cmp是一個比較器,自定義比較器的話傳入兩個參數x,y,返回值限制為1(x>y), 0(x=y), -1(x<y)。默認是常規比較,數字比較,字元串比較等等。
key是對序列元素處理(比如問題中序列元素仍是序列,就可以再對序列取索引值),也就是sort的比較器實際接收到值是key處理後的結果(問題中實際參與比較的是1,2,3,4)。
reverse默認是False,意思是從小到大排序,傳入True,就從大到小排。
④ python列表排序方法
列表的sort方法就是用來進行排序的。
主要就是兩個參數,key,reverse
先說reverse,這個很簡單,就是指出是否進行倒序排序:一般情況下,1排在2的前面,而倒序則相反。
key參數:一般它是一個函數,它接受列表中每一個元素,返回一個可用用於比較的值。
s=[1,2,3,4,5]
s.sort(key=lambda _: _**2%7)
print(s)
輸出的是:[1, 3, 4, 2, 5]
如果看不懂lambda表達式,可以看這一段等價的寫法:
def myfn(x):
....return (x * x) % 7
s=[1,2,3,4,5]
s.sort(key=myfn)
print(s)
輸出的結果是一樣的。
key使用的函數可以是自定義函數也可以pytho內置的函數,或者是某個類或者實例的方法,只要它能接受一個參數,返回一個可比較的值即可。比如這樣:
s=[[1,2,4],[3,3,5],[1,1,1],[5,7,9]]
s.sort(key=max) # 直接使用max函數作為排序依據
print(s)
[[1, 1, 1], [1, 2, 4], [3, 3, 5], [5, 7, 9]]