列表物件提供了sort()方法支援原地排序,而內建函式sorted()不支援原地操作只是返回新的列表,並不對原列表進行任何修改。sorted()方法可以對列表、元組、字典、range物件等進行排序。列表的sort()方法和內建函式sorted()都支援key引數實現複雜排序要求。
#使用key來指定排序依據,先按姓名公升序排序,姓名相同的按年齡降序排序
>>> persons = [, , , ]
>>> persons
[, , , ]
>>> print(sorted(persons, key=lambda x:(x['name'], -x['age'])))
[, , , ]
>>> phonebook =
>>> from operator import itemgetter
>>> sorted(phonebook.items(), key=itemgetter(1)) #按字典元素的值預設進行公升序排列
[('xuzm', '123'), ('xuzm2', '456'), ('xuzm3', '789')]
>>> sorted(phonebook.items(), key=itemgetter(0),reverse=true) #按字典中元素的鍵進行降序排序
[('xuzm3', '789'), ('xuzm2', '456'), ('xuzm', '123')]
>>> gameresult = [['bob', 95.0, 'a'], ['alan', 86.0, 'c'], ['mandy', 83.5, 'a'], ['rob', 89.3, 'e']]
>>> sorted(gameresult, key=itemgetter(0, 1)) #按姓名公升序排列,姓名相同的按分數進行公升序排列
[['alan', 86.0, 'c'], ['bob', 95.0, 'a'], ['mandy', 83.5, 'a'], ['rob', 89.3, 'e']]
>>> sorted(gameresult, key=itemgetter(1, 0)) #按分數進行公升序排列,分數syypjmp相同的按姓名進行公升序排列
[['mandy', 83.5, 'a'], ['alan', 86.0, 'c'], ['rob', 89.3, 'e'], ['bob', 95.0, 'a']]
>>> sorted(gameresult, key=itemgetter(2, 0)) #按等級公升序排列,等級相同的按姓名進行公升序排列
[['bob', 95.0, 'a']syypjmp, ['mandy', 83.5, 'a'], ['alan程式設計客棧', 86.0, 'c'], ['rob', 89.3, 'e']]
>>> gameresult = [,,,
]>>> sorted(gameresult, key=itemgetter('wins', 'name')) #按wins排列,wins相同的按name驚進行排列
[, , , ]
根據另乙個列表的順序排列乙個列表
>>> list1 = ["what", "i'm", "sortinwww.cppcns.comg", "by"]
>>> list2 = ["something", "else", "to", "sort"]
>>> pairs = zip(list1, list2) #用zip物件壓縮
>>> pairs = sorted(pairs) #新列表按照list1進行排序
>>> pairs
[("i'm", 'else'), ('by', 'sort'), ('sorting', 'to'), ('what', 'something')]
>>> result = [x[1] for x in pairs] #按新列表中list1的順序篩選出新列表中的list2部分
>>> result
['else', 'sort', 'to', 'something']
Python 函式式程式設計 高階函式 sorted
排序也是在程式中經常用到的演算法。無論使用氣泡排序還是快速排序,排序的核心是比較兩個元素的大小。如果是數字,我們可以直接比較,但如果是字串或者兩個dict呢?直接比較數學上的大小是沒有意義的,因此,比較的過程必須通過函式抽象出來。print sorted 36,5,21,12,9,21 d anni...
python重寫內建函式 python 內建函式
說明 zip 函式用於將可迭代的物件作為引數,將物件中對應的元素打包成乙個個元組,然後返回由這些元組組成的列表。如果各個迭代器的元素個數不一致,則返回列表長度與最短的物件相同,利用 號操作符,可以將元組解壓為列表。語法 zip iterable1,iterable2,引數 iterable 乙個或多...
python內建函式簡稱 Python內建函式詳解
此文參考python文件,然後結合自己的理解,寫下來,一方面方便自己,讓自己好好學習,順便回憶回憶 另一方面,讓喜歡的盆友也參考一下。經查詢,3.6版本總共有68個內建函式,主要分類如下 數 算 7個 型別轉換 24個 序列操作 8個 物件操作 9個 反射操作 8個 變數操作 2個 互動操作 2個 ...