sort() 函式用於對原列表進行排序,如果指定引數,則使用比較函式指定的比較函式。
list
.sort(
cmp=
none
, key=
none
, reverse=
false
)
引數:cmp – 可選引數, 如果指定了該引數會使用該引數的方法進行排序。
key – 主要是用來進行比較的元素,只有乙個引數,具體的函式的引數就是取自於可迭代物件中,指定可迭代物件中的乙個元素來進行排序。
reverse – 排序規則,reverse = true 降序, reverse = false 公升序(預設)。
返回值:
該函式沒有返回值,但會對陣列/列表進行排序
a =[1
,3,4
,2]# 1.一般呼叫
a.sort(
)# 呼叫1,無返回值,a=[1, 2, 3, 4]
a.sort(reverse=
true
)# 逆序, a=[4, 3, 2, 1]
b =sorted
(a)# 呼叫2,有返回值, b=[1, 2, 3, 4]
# 2.通過指定列表中的元素排序輸出列表
# 獲取列表的第二個元素
deftakesecond
(elem)
:return elem[1]
# 列表
random =[(
2,2)
,(3,
4),(
4,1)
,(1,
3)]# 指定第二個元素排序
random.sort(key=takesecond)
# 按列表每個元組中第二位元素的公升序排序整個陣列
# 輸出類別
print
(random)
# [(4, 1), (2, 2), (1, 3), (3, 4)]
3.cmp作為sort()引數使用(python2中使用,python3已棄用)
注: python3中也取消了函式傳入機制,可以構造排序函式遞給key實現。
>>
>
cmp(42,
32)1>>
>
cmp(99,
100)-1
>>
>
cmp(10,
10)0>>
> numbers =[5
,2,9
,7]>>
> numbers.sort(
)>>
> numbers.sort(
cmp)
# 通過呼叫cmp(x,y)來排序,與不傳入cmp引數時效果一樣(結果相同,但實際執行流程不同)
>>
> numbers[2
,5,7
,9]
或者自定義函式傳入:
numbers =[5
,2,9
,7]def
reverse_numbers
(x, y)
:return y - x
numbers.sort(
cmp= reverse_numbers)
# 逆序,numbers=[9,7,5,2]
# 上述用lambda匿名函式也可以寫成:
numbers.sort(
lambda x, y: y-x)
# numbers=[9,7,5,2]
演算法中的應用:
例:把陣列排成最小的數。
輸入乙個正整數陣列,把陣列裡所有數字拼接起來排成乙個數,列印能拼接出的所有數字中最小的乙個。例如輸入陣列,則列印出這三個數字能排成的最小數字為321323。
**:
# -*- coding:utf-8 -*-
class
solution
:def
printminnumber
(self, numbers)
:# write code here
ifnot
len(numbers)
:return
"" arr =
[str
(x)for x in numbers]
arr.sort(
lambda x,y:
cmp(x+y,y+x)
)# 讓x和y及y和x拼接後的字串進行大小比較,若x+yreturn
int(
"".join(arr)
)
python中sort和sorted函式的區別
python中sort和sorted函式的區別 python中的sort和sorted都屬於排序函式 但是兩者有用一些區別 sort 函式排序是對列表本身進行排序,使用這個函式後,原來的list列表也會發生改變,而且呼叫方式為 列表名.sort 而且不可另外賦給乙個列表 sorted的函式是對列表排...
python的sort 函式詳解
函式 sort 用於列表中元素的排序 list.sort 不會返回物件,會改變原有的list 這點與sorted 不同,sorted 函式會返回乙個列表,而sort 函式是直接在原來的基礎上修改,其次注意語法 函式sort 會預設地按公升序排列,能否讓sort 函式按我們想要的排列方式進行排列呢?s...
c 中的sort 函式
起來自己天天排序排序,冒泡啊,二分查詢啊,結果在stl中就自帶了排序函式sort,qsort,總算把自己解脫了 所以自己總結了一下,首先看sort函式見下表 函式名 功能描述 sort 對給定區間所有元素進行排序 stable sort 對給定區間所有元素進行穩定排序 partial sort 對給...