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 – 主要是用來進行比較的元素,只有乙個引數,具體的函式的引數就是取自於可迭代物件中,指定可迭代物件中的乙個元素來進行排序。注意:python3刪掉了cmp引數。cmp – 比較的函式,這個具有兩個引數,引數的值都是從可迭代物件中取出,此函式必須遵守的規則為,大於則返回1,小於則返回-1,等於則返回0。
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...