python中sort 函式的應用

2021-10-24 05:35:17 字數 2438 閱讀 6060

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 對給...