1. (按字母順序排列)——sort()函數(shù)
創(chuàng)新互聯(lián)專注于石拐網(wǎng)站建設(shè)服務(wù)及定制,我們擁有豐富的企業(yè)做網(wǎng)站經(jīng)驗。 熱誠為您提供石拐營銷型網(wǎng)站建設(shè),石拐網(wǎng)站制作、石拐網(wǎng)頁設(shè)計、石拐網(wǎng)站官網(wǎng)定制、微信小程序服務(wù),打造石拐網(wǎng)絡(luò)公司原創(chuàng)品牌,更為您提供石拐網(wǎng)站排名全網(wǎng)營銷落地服務(wù)。
例:
cars?=['bmw','audi','toyota','subaru']
cars.sort()
print(cars)
輸出得到
['audi', 'bmw', 'subaru', 'toyota']
請點擊輸入圖片描述
請點擊輸入圖片描述
2.按字母反序排列——reverse函數(shù)
cars?=['bmw','audi','toyota','subaru']
cars.sort(reverse=True)# reverse“adj. 反面的;顛倒的;n. 倒轉(zhuǎn),反向”
print(cars)
輸出得到
['toyota', 'subaru', 'bmw', 'audi']
請點擊輸入圖片描述
請點擊輸入圖片描述
3.對列表進行臨時排序——sorted()函數(shù)
cars?=['bmw','audi','toyota','subaru']
print("Here?is?the?original?list:")
print(cars)
print("\nHere?is?the?sorted?list:")
print(sorted(cars))
print("Here?is?the?original?list?again:")
print(cars)
輸出得到
Here is the original list:
['bmw', 'audi', 'toyota', 'subaru']
Here is the sorted list:
['audi', 'bmw', 'subaru', 'toyota']
Here is the original list again:
['bmw', 'audi', 'toyota', 'subaru']
請點擊輸入圖片描述
請點擊輸入圖片描述
4. 倒著打印列表——reverse()函數(shù)
cars?=['bmw','audi','toyota','subaru']
print(cars)
cars.reverse()
print(cars)
輸出得到
['bmw', 'audi', 'toyota', 'subaru']
['subaru', 'toyota', 'audi', 'bmw']
請點擊輸入圖片描述
請點擊輸入圖片描述
如果a = [ [1,'3'], [1,'2'],[2,'5'],[2,'4'] ]
有兩種解決方式:
方法一:
將字符串轉(zhuǎn)換為int
sorted(list, key=lambda x:(x[0],-int(x[1])))
方法二:
取字符串的第一個字母進行比較
s = sorted(a, key=lambda x:(x[0],x[1][0]))
這個方法當字符串為一串單詞時,也有效
【Python】 sorted函數(shù)
我們需要對List、Dict進行排序,Python提供了兩個方法
對給定的List L進行排序,
方法1.用List的成員函數(shù)sort進行排序,在本地進行排序,不返回副本
方法2.用built-in函數(shù)sorted進行排序(從2.4開始),返回副本,原始輸入不變
--------------------------------sorted---------------------------------------
help(sorted)
Help on built-in function sorted in module __builtin__:
sorted(...)
sorted(iterable, cmp=None, key=None, reverse=False) -- new sorted list
---------------------------------sort----------------------------------------
help(list.sort)
Help on method_descriptor:
sort(...)
L.sort(cmp=None, key=None, reverse=False) -- stable sort *IN PLACE*;
cmp(x, y) - -1, 0, 1
-----------------------------------------------------------------------------
iterable:是可迭代類型;
cmp:用于比較的函數(shù),比較什么由key決定;
key:用列表元素的某個屬性或函數(shù)進行作為關(guān)鍵字,有默認值,迭代集合中的一項;
reverse:排序規(guī)則. reverse = True 降序 或者 reverse = False 升序,有默認值。
返回值:是一個經(jīng)過排序的可迭代類型,與iterable一樣。
參數(shù)說明:
(1) cmp參數(shù)
cmp接受一個函數(shù),拿整形舉例,形式為:
def f(a,b):
return a-b
如果排序的元素是其他類型的,如果a邏輯小于b,函數(shù)返回負數(shù);a邏輯等于b,函數(shù)返回0;a邏輯大于b,函數(shù)返回正數(shù)就行了
(2) key參數(shù)
key也是接受一個函數(shù),不同的是,這個函數(shù)只接受一個元素,形式如下
def f(a):
return len(a)
key接受的函數(shù)返回值,表示此元素的權(quán)值,sort將按照權(quán)值大小進行排序
(3) reverse參數(shù)
接受False 或者True 表示是否逆序
例子:
(1)按照元素長度排序
L = [{1:5,3:4},{1:3,6:3},{1:1,2:4,5:6},{1:9}]
def f(x):
return len(x)
sort(key=f)
print L
輸出:
[{1: 9}, {1: 5, 3: 4}, {1: 3, 6: 3}, {1: 1, 2: 4, 5: 6}]
(2)按照每個字典元素里面key為1的元素的值排序
L = [{1:5,3:4},{1:3,6:3},{1:1,2:4,5:6},{1:9}]
def f2(a,b):
return a[1]-b[1]
L.sort(cmp=f2)
print L
. 對由tuple組成的List排序
Python代碼
students = [('john', 'A', 15), ('jane', 'B', 12), ('dave', 'B', 10),]
用key函數(shù)排序:返回由tuple組成的list
Python代碼
sorted(students, key=lambda student : student[2]) # sort by age
[('dave', 'B', 10), ('jane', 'B', 12), ('john', 'A', 15)]
用cmp函數(shù)排序
Python代碼
sorted(students, cmp=lambda x,y : cmp(x[2], y[2])) # sort by age
[('dave', 'B', 10), ('jane', 'B', 12), ('john', 'A', 15)]
用 operator 函數(shù)來加快速度,
Python代碼
from operator import itemgetter, attrgetter
sorted(students, key=itemgetter(2))
用 operator 函數(shù)進行多級排序
Python代碼
sorted(students, key=itemgetter(1,2)) # sort by grade then by age
[('john', 'A', 15), ('dave', 'B', 10), ('jane', 'B', 12)]
2. 對由字典排序 ,返回由tuple組成的List,不再是字典。
Python代碼
d = {'data1':3, 'data2':1, 'data3':2, 'data4':4}
sorted(d.iteritems(), key=itemgetter(1), reverse=True)
[('data4', 4), ('data1', 3), ('data3', 2), ('data2', 1)]