【Python】 sorted函數(shù)

為企業(yè)提供成都網(wǎng)站建設(shè)、做網(wǎng)站、網(wǎng)站優(yōu)化、成都營銷網(wǎng)站建設(shè)、競價托管、品牌運營等營銷獲客服務。創(chuàng)新互聯(lián)公司擁有網(wǎng)絡(luò)營銷運營團隊,以豐富的互聯(lián)網(wǎng)營銷經(jīng)驗助力企業(yè)精準獲客,真正落地解決中小企業(yè)營銷獲客難題,做到“讓獲客更簡單”。自創(chuàng)立至今,成功用技術(shù)實力解決了企業(yè)“網(wǎng)站建設(shè)、網(wǎng)絡(luò)品牌塑造、網(wǎng)絡(luò)營銷”三大難題,同時降低了營銷成本,提高了有效客戶轉(zhuǎn)化率,獲得了眾多企業(yè)客戶的高度認可!
我們需要對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)]
感覺不是python
function的問題:
matlab中調(diào)用python函數(shù)文件后
,這個函數(shù)文件就導入內(nèi)存了,改動python文件后,內(nèi)存中已經(jīng)加載的那個函數(shù)文件
并不會隨著改變,所以依然是str=abc
。。。(當然,這只是個人猜想,實際情況你要自己試驗)
個人建議是:能否在terminal中調(diào)試python文件,沒問題了在導入Matlab中
我也是正在學PYthon的基礎(chǔ)語法。
題主忘記了你后面paraTestList(a[2:])中,括號內(nèi)的a[2:]命令是創(chuàng)建了一個包含列表a的一部分的一個副本列表,這樣是不會改變列表a的實際內(nèi)容的。打印出的a肯定也是不會變的。
具體做法是
def paraTestList(L):
L[0]='z'
a=['a','b','c','d']
b=a[2:]
paraTestList(b)
print(b)
希望能幫到你。
python 中,函數(shù)內(nèi)部修改的形參,并不會改變函數(shù)外部實參的值。
以題目中例子為例,首次滿足xn==xn2和yn==yn2時,自然不會執(zhí)行while循環(huán)內(nèi)的huisu函數(shù),于是退出huisu(定義這一層huisu為A),也就是退出到該層嵌套函數(shù),此時,到達一個外層huisu(定義這一層huisu為B),此時在while循環(huán)中,這個時候,xn2是85,yn2就是447。
說白了,就是A中的yn2雖然為448,但B中的yn2始終是447,再外一層的huisu兩個數(shù)字就分別是85和446,以此類推。
于是乎,此時,程序會一直在B中執(zhí)行while循環(huán),不斷輸出同樣的數(shù)字,永遠不會退出。
這里改一下:
if len(x)!=11:
print('你的號碼不足11位,無效!')
x=tel_number() #這里如果不改x的值還是151
return x
網(wǎng)站欄目:python函數(shù)輸入不變,python輸入非整數(shù)報錯
鏈接URL:http://chinadenli.net/article25/dsggjci.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供搜索引擎優(yōu)化、App設(shè)計、網(wǎng)站內(nèi)鏈、企業(yè)建站、網(wǎng)站導航、靜態(tài)網(wǎng)站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)