Python學習筆記 sort 和 sorted

2021-09-13 12:37:00 字數 3009 閱讀 9234

sort 與 sorted 區別:

1、sort 是應用在list上的方法,sorted 可以對所有iterable進行排序操作。

2、list 的 sort 方法返回的是對原來的列表進行操作,而內建函式 sorted 方法返回的是乙個新的 list,而不是在原來的基礎上進行的操作。

list.sort(cmp=none, key=none, reverse=false)

reverse – 排序規則,reverse = true 降序, reverse = false 公升序(預設)

sorted(iterable, /, *, key=none, reverse=false)

key和cmp的區別:

key – 主要是用來進行比較的元素,只有乙個引數,具體的函式的引數就是取自於可迭代物件中,指定可迭代物件中的乙個元素來進行排序。

cmp – 比較的函式,這個具有兩個引數,引數的值都是從可迭代物件中取出,此函式必須遵守的規則為,大於則返回1,小於則返回-1,等於則返回0。

注意:python3刪掉了cmp引數。

random =[(

2,2)

,(3,

4),(

4,1)

,(1,

3)]# 指定按第二個元素以降序排序

random.sort(key=

lambda x:x[1]

,reverse=

true

)

items()可以把字典中的鍵值對轉化成乙個列表,其中每個元素是乙個tuple

sorted+lambda

# 字典

a =b = a.items(

)# [('tuffy', 2), ('spike', 10), ('tom', 8), ('tyke', 3), ('jerry', 7)]

# 根據key值進行排序

key_result =

sorted

(a.items(

), key=

lambda x: x[0]

)# [('bob', 75), ('michael', 95), ('tracy', 85)]

# 根據value值進行排序

value_result =

sorted

(a.items(

), key=

lambda x: x[1]

)# [('bob', 75), ('tracy', 85), ('michael', 95)]

sorted+itemgetter

from operator import itemgetter

c =sorted

(a.items(

), key=itemgetter(1)

)# [('tuffy', 2), ('tyke', 3), ('jerry', 7), ('tom', 8), ('spike', 10)]

d =sorted

(a.iteritems(

), key=itemgetter(1)

)# [('tuffy', 2), ('tyke', 3), ('jerry', 7), ('tom', 8), ('spike', 10)]

e =sorted

(a)# 只對鍵排序,['jerry', 'spike', 'tom', 'tuffy', 'tyke']

cmp_to_key

python3把sort和sorted的cmp引數取消了,想要使用多個引數時,可以使用cmp_to_key

from functools import cmp_to_key

nums =[1

,3,2

,4]nums.sort(key=cmp_to_key(

lambda a, b: a - b)

)print

(nums)

# [1, 2, 3, 4]

自定義比較器

把陣列排成最小的數

class

comparator

(str):

def__lt__

(x, y)

:return x + y < y + x

class

solution

:def

printminnumber

(self, nums):if

not nums:

return

'' largest_num =

''.join(

sorted

(map

(str

, nums)

, key=comparator)

)# 如果陣列裡面幾個數全是0,比如[0,0,0,0], 那麼組成最小的數依然還是0,不能輸出0000

return

'0'if largest_num[0]

=='0'

else largest_num

class

firstlist

(list):

def__lt__

(self, other)

:return self[0]

< other[0]

lst =[[

'a',3]

,['b',1]

]lst =

[firstlist(item)

for item in lst]

更多參考:

Python學習筆記 Sort與Sorted

先舉例兩者用法 l 1 3,2 6,5 4 l.sort l 1 2,3 4,5 6 l 1 3,2 6,5 4 sorted l 1,2,3,4,5,6 l 1 3,2 6,5 4 上例可以看出,sort是list的屬性方法,得用l.sort 來呼叫,無需額外引數,無返回值,而且執行完之後l本身發...

python的列表排序sort和sorted

list排序可以使用python內建的sorted 函式或list自帶的sort 函式。區別 sorted 不修改原list而是建立個新list,list.sort 直接修改原list l 3 4,2 5,7 1 l new sorted l print l new,l 原list未修改 1 2,3...

vector的sort使用 學習筆記

c 裡的容器有vector,list,map,pair等。最近在學習使用過程中,走了一些彎路,記錄一下。彎路1 map插入元素 如果定義了 mapm test 要插入乙個元素,不能直接m test.insert 1,1 得 m test.insert pair 1,1 或者使用m test.inse...