日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

python中sorted的用法append_python sorted()排序详解

發布時間:2023/12/1 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python中sorted的用法append_python sorted()排序详解 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

排序,在編程中經常遇到的算法,我也在幾篇文章中介紹了一些關于排序的算法。有的高級語言內置了一些排序函數。本文講述Python在這方面的工作。供使用

內置函數sorted()/list.sort()的使用

簡單應用

python對list有一個內置函數:

>>> a=[5,3,6,1,9,2]

>>>

1

2

3

4

5

6

>>>a=[5,3,6,1,9,2]

>>>sorted(a)#a經過sorted之后,得到一個排序結果

[1,2,3,5,6,9]#但是,原有的a并沒有受到影響

>>>a

[5,3,6,1,9,2]

也可以使用list.sort()來進行上述操作。

>>> a.sort()

>>> a #注意這里,經過list.sort()之后,原有

[1, 2, 3, 5, 6, 9] #a的順序已經發生變化,與上述不同之處。

1

2

3

4

>>>a.sort()

>>>a#注意這里,經過list.sort()之后,原有

[1,2,3,5,6,9]#a的順序已經發生變化,與上述不同之處。

sorted和list.sort()的區別:list.sort()只能對list類型進行排序。如下:

>>> b_dict={1:'e',3:'m',9:'a',5:'e'}

>>> b_dict.sort()

Traceback (most recent call last):

File "", line 1, in

AttributeError: 'dict' object has no attribute 'sort'

1

2

3

4

5

6

>>>b_dict={1:'e',3:'m',9:'a',5:'e'}

>>>b_dict.sort()

Traceback(mostrecentcalllast):

File"",line1,in

AttributeError:'dict'objecthasnoattribute'sort'

而sorted則不然,看例子:

>>> b_dict

{1: 'e', 3: 'm', 5: 'e', 9: 'a'}

>>> sorted(b_dict)

[1, 3, 5, 9]

1

2

3

4

5

>>>b_dict

{1:'e',3:'m',5:'e',9:'a'}

>>>sorted(b_dict)

[1,3,5,9]

sorted之后,上述對dictinoary中,將key值取出并排序,返回list類型的排序結果。

按照指定關鍵詞排序

在list.sort()和sorted中,都可以根據指定的key值排序。例如:

sorted的例子:

>>> qw="I am Qiwsir you can read my articles im my blog".split()

>>> qw

['I', 'am', 'Qiwsir', 'you', 'can', 'read', 'my', 'articles', 'im', 'my', 'blog']

>>> sorted(qw,key=str.lower) #按照字母升序排列

['am', 'articles', 'blog', 'can', 'I', 'im', 'my', 'my', 'Qiwsir', 'read', 'you']

1

2

3

4

5

6

>>>qw="I am Qiwsir you can read my articles im my blog".split()

>>>qw

['I','am','Qiwsir','you','can','read','my','articles','im','my','blog']

>>>sorted(qw,key=str.lower)#按照字母升序排列

['am','articles','blog','can','I','im','my','my','Qiwsir','read','you']

list.sort()的例子:

>>> qw

['I', 'am', 'Qiwsir', 'you', 'can', 'read', 'my', 'articles', 'im', 'my', 'blog']

>>> qw.sort(key=str.lower)

>>> qw

['am', 'articles', 'blog', 'can', 'I', 'im', 'my', 'my', 'Qiwsir', 'read', 'you']

1

2

3

4

5

6

>>>qw

['I','am','Qiwsir','you','can','read','my','articles','im','my','blog']

>>>qw.sort(key=str.lower)

>>>qw

['am','articles','blog','can','I','im','my','my','Qiwsir','read','you']

此外,key還可以接收函數的單一返回值,按照該值排序。例如:

>>> name_mark_age = [('zhangsan','A',15),('LISI','B',14),('WANGWU','A',16)]

>>> sorted(name_mark_age, key = lambda x: x[2]) #根據年齡排序

[('LISI', 'B', 14), ('zhangsan', 'A', 15), ('WANGWU', 'A', 16)]

>>> sorted(name_mark_age, key = lambda x: x[1]) #根據等級排序

[('zhangsan', 'A', 15), ('WANGWU', 'A', 16), ('LISI', 'B', 14)]

>>> sorted(name_mark_age, key = lambda x: x[0]) #根據姓名排序

[('LISI', 'B', 14), ('WANGWU', 'A', 16), ('zhangsan', 'A', 15)]

1

2

3

4

5

6

7

8

9

10

>>>name_mark_age=[('zhangsan','A',15),('LISI','B',14),('WANGWU','A',16)]

>>>sorted(name_mark_age,key=lambdax:x[2])#根據年齡排序

[('LISI','B',14),('zhangsan','A',15),('WANGWU','A',16)]

>>>sorted(name_mark_age,key=lambdax:x[1])#根據等級排序

[('zhangsan','A',15),('WANGWU','A',16),('LISI','B',14)]

>>>sorted(name_mark_age,key=lambdax:x[0])#根據姓名排序

[('LISI','B',14),('WANGWU','A',16),('zhangsan','A',15)]

除了上述方式,python中還提供了一個選擇循環選擇指定元組值的模塊

>>> from operator import itemgetter #官方文檔:https://docs.python.org/2/library/operator.html#module-operator

>>> name_mark_age.append(('zhaoliu','B',16))

>>> name_mark_age

[('zhangsan', 'A', 15), ('LISI', 'B', 14), ('WANGWU', 'A', 16), ('zhaoliu', 'B', 16)]

>>> sorted(name_mark_age,key=itemgetter(2)) #按照年齡排序

[('LISI', 'B', 14), ('zhangsan', 'A', 15), ('WANGWU', 'A', 16), ('zhaoliu', 'B', 16)]

>>> sorted(name_mark_age,key=itemgetter(1,2)) #先按照等級排序,相同等級看年齡

[('zhangsan', 'A', 15), ('WANGWU', 'A', 16), ('LISI', 'B', 14), ('zhaoliu', 'B', 16)]

1

2

3

4

5

6

7

8

9

10

11

>>>fromoperatorimportitemgetter#官方文檔:https://docs.python.org/2/library/operator.html#module-operator

>>>name_mark_age.append(('zhaoliu','B',16))

>>>name_mark_age

[('zhangsan','A',15),('LISI','B',14),('WANGWU','A',16),('zhaoliu','B',16)]

>>>sorted(name_mark_age,key=itemgetter(2))#按照年齡排序

[('LISI','B',14),('zhangsan','A',15),('WANGWU','A',16),('zhaoliu','B',16)]

>>>sorted(name_mark_age,key=itemgetter(1,2))#先按照等級排序,相同等級看年齡

[('zhangsan','A',15),('WANGWU','A',16),('LISI','B',14),('zhaoliu','B',16)]

在官方文檔上,有這樣一個例子,和上面的操作是完全一樣的。

>>> class Student:

def __init__(self, name, grade, age):

self.name = name

self.grade = grade

self.age = age

def __repr__(self):

return repr((self.name, self.grade, self.age))

>>> student_objects = [

Student('john', 'A', 15), #注意這里,用class Student來生成列表內的值

Student('jane', 'B', 12), #因此,可以通過student_objects[i].age來訪問某個名稱的年齡,i=0,則是john的年齡

Student('dave', 'B', 10),

]

>>> sorted(student_objects, key=lambda student: student.age)

[('dave', 'B', 10), ('jane', 'B', 12), ('john', 'A', 15)]

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

>>>classStudent:

def__init__(self,name,grade,age):

self.name=name

self.grade=grade

self.age=age

def__repr__(self):

returnrepr((self.name,self.grade,self.age))

>>>student_objects=[

Student('john','A',15),#注意這里,用class Student來生成列表內的值

Student('jane','B',12),#因此,可以通過student_objects[i].age來訪問某個名稱的年齡,i=0,則是john的年齡

Student('dave','B',10),

]

>>>sorted(student_objects,key=lambdastudent:student.age)

[('dave','B',10),('jane','B',12),('john','A',15)]

也可以引用operator模塊來實現上述排序

>>>from operator import attrgetter

>>> sorted(student_objects, key=attrgetter('age'))

[('dave', 'B', 10), ('jane', 'B', 12), ('john', 'A', 15)]

>>> sorted(student_objects, key=attrgetter('grade', 'age'))

[('john', 'A', 15), ('dave', 'B', 10), ('jane', 'B', 12)]

1

2

3

4

5

6

>>>fromoperatorimportattrgetter

>>>sorted(student_objects,key=attrgetter('age'))

[('dave','B',10),('jane','B',12),('john','A',15)]

>>>sorted(student_objects,key=attrgetter('grade','age'))

[('john','A',15),('dave','B',10),('jane','B',12)]

總結:sorted的能力超強,不僅實現排序,還能按照指定關鍵詞排序。

以上例子都是升序,如果,增加reverse=True。例如:

>>>from operator import itemgetter

>>> name_mark_age

[('zhangsan', 'A', 15), ('LISI', 'B', 14), ('WANGWU', 'A', 16), ('zhaoliu', 'B', 16)]

>>> sorted(name_mark_age, key=itemgetter(2),reverse=True)

[('WANGWU', 'A', 16), ('zhaoliu', 'B', 16), ('zhangsan', 'A', 15), ('LISI', 'B', 14)]

1

2

3

4

5

6

>>>fromoperatorimportitemgetter

>>>name_mark_age

[('zhangsan','A',15),('LISI','B',14),('WANGWU','A',16),('zhaoliu','B',16)]

>>>sorted(name_mark_age,key=itemgetter(2),reverse=True)

[('WANGWU','A',16),('zhaoliu','B',16),('zhangsan','A',15),('LISI','B',14)]

總結

以上是生活随笔為你收集整理的python中sorted的用法append_python sorted()排序详解的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。