#pythonçæåºè¯¦è§£
æåºï¼å¨ç¼ç¨ä¸ç»å¸¸éå°çç®æ³ï¼æä¹å¨å ç¯æç« ä¸ä»ç»äºä¸äºå
³äºæåºçç®æ³ãæçé«çº§è¯è¨å
ç½®äºä¸äºæåºå½æ°ãæ¬æè®²è¿°Pythonå¨è¿æ¹é¢çå·¥ä½ãä¾ä½¿ç¨pythonçç¨åºå们åèï¼ä¹è®©æ²¡æä½¿ç¨pythonçæåäºè§£pythonãé¢ç¥ä¸çªâç彿éï¼è¯·ç¨Pythonâçå«ä¹ã
##å
ç½®å½æ°sorted()/list.sort()ç使ç¨
###ç®ååºç¨
python对listæä¸ä¸ªå
ç½®å½æ°ï¼sorted(),ä¸é¨ç¨äºæåºã举ä¾ï¼
>>> 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ç顺åºå·²ç»åçååï¼ä¸ä¸è¿°ä¸åä¹å¤ã
**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'
èsortedåä¸ç¶ï¼çä¾åï¼
>>> 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']
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']
æ¤å¤ï¼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)]
é¤äºä¸è¿°æ¹å¼ï¼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)]
å¨å®æ¹ææ¡£ä¸ï¼æè¿æ ·ä¸ä¸ªä¾åï¼åä¸é¢çæä½æ¯å®å
¨ä¸æ ·çã
>>> 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)]
ä¹å¯ä»¥å¼ç¨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)]
**æ»ç»ï¼**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)]
##sortedçç®æ³
pythonä¸çsortedç®æ³ï¼ç½ä¸æäººæ°æï¼è¯´æ¯è¾ä½çº§ãå
¶å®ä¸ç¶ï¼éè¿é
è¯»å®æ¹ææ¡£ï¼åç°pythonä¸çsortedæåºï¼ççæ¯é«å¤§ä¸ï¼ç¨çTimsortç®æ³ãä»ä¹æ¯Timsortï¼è¯·ç wikiçè§£éï¼http://en.wikipedia.org/wiki/Timsortï¼å¦å¤ï¼å½å
æä¸ä¸ªææ¡£ï¼éå½ç¿»è¯ï¼http://blog.csdn.net/yangzhongblog/article/details/8184707ï¼è¿éæªåä¸ä¸ªä¸åæåºç®æ³æ¯è¾çå¾ç¤ºï¼å°±æç½sortedçå¨åäºã
仿¶é´å¤æåº¦æ¥çï¼Timsortæ¯å¨æ¦çã

ä»ç©ºé´å¤æåº¦æ¥è®²ï¼éè¦çå¼é卿°éå¤§çæ¶åä¼å¢å¤§ã

综ä¸ï¼å¯ä»¥çåºï¼å°±ä¸è¬æ
åµï¼ä½¿ç¨sorted足以è½å¤å®ææåºçè¦æ±ï¼å¹¶ä¸æ¯ç¨³å®çã
å½ç¶ï¼pythonä¸ä¹æå
¶å®ä¸äºæåºæ¨¡åï¼é½å¯ä»¥ç´æ¥æ¿è¿æ¥ä½¿ç¨ã
æ¬æä½è
å¨å客ågithubä¸é½æå¤ç§å
³äºpythonæåºæ¹æ³å模åçæç« 说æã