Python中的sort()方法用于數(shù)組排序,本文以實(shí)例形式對(duì)此加以詳細(xì)說明:
專注于為中小企業(yè)提供做網(wǎng)站、網(wǎng)站建設(shè)服務(wù),電腦端+手機(jī)端+微信端的三站合一,更高效的管理,為中小企業(yè)寶雞免費(fèi)做網(wǎng)站提供優(yōu)質(zhì)的服務(wù)。我們立足成都,凝聚了一批互聯(lián)網(wǎng)行業(yè)人才,有力地推動(dòng)了近1000家企業(yè)的穩(wěn)健成長(zhǎng),幫助中小企業(yè)通過網(wǎng)站建設(shè)實(shí)現(xiàn)規(guī)模擴(kuò)充和轉(zhuǎn)變。
一、基本形式
列表有自己的sort方法,其對(duì)列表進(jìn)行原址排序,既然是原址排序,那顯然元組不可能擁有這種方法,因?yàn)樵M是不可修改的。
123
x = [4, 6, 2, 1, 7, 9]x.sort()print x # [1, 2, 4, 6, 7, 9]
如果需要一個(gè)排序好的副本,同時(shí)保持原有列表不變,怎么實(shí)現(xiàn)呢
12345
x =[4, 6, 2, 1, 7, 9]y = x[ : ]y.sort()print y #[1, 2, 4, 6, 7, 9]print x #[4, 6, 2, 1, 7, 9]
注意:y = x[:] 通過分片操作將列表x的元素全部拷貝給y,如果簡(jiǎn)單的把x賦值給y:y = x,y和x還是指向同一個(gè)列表,并沒有產(chǎn)生新的副本。
另一種獲取已排序的列表副本的方法是使用sorted函數(shù):
1234
x =[4, 6, 2, 1, 7, 9]y = sorted(x)print y #[1, 2, 4, 6, 7, 9]print x #[4, 6, 2, 1, 7, 9]
sorted返回一個(gè)有序的副本,并且類型總是列表,如下:
1
print sorted('Python') #['P', 'h', 'n', 'o', 't', 'y']
二、自定義比較函數(shù)
可以定義自己的比較函數(shù),然后通過參數(shù)傳遞給sort方法:
12345678910111213
def comp(x, y):if x y:return 1elif x y:return -1else:return 0 nums = [3, 2, 8 ,0 , 1]nums.sort(comp)print nums # 降序排序[8, 3, 2, 1, 0]nums.sort(cmp) # 調(diào)用內(nèi)建函數(shù)cmp ,升序排序print nums # 降序排序[0, 1, 2, 3, 8]
三、可選參數(shù)
sort方法還有兩個(gè)可選參數(shù):key和reverse
1、key在使用時(shí)必須提供一個(gè)排序過程總調(diào)用的函數(shù):
123
x = ['mmm', 'mm', 'mm', 'm' ]x.sort(key = len)print x # ['m', 'mm', 'mm', 'mmm']
2、reverse實(shí)現(xiàn)降序排序,需要提供一個(gè)布爾值:
123
y = [3, 2, 8 ,0 , 1]y.sort(reverse = True)print y #[8, 3, 2, 1, 0]
在python中,變量賦值的語法比較簡(jiǎn)單,語法就是 “變量名 = 對(duì)象”,由于python屬于動(dòng)態(tài)語音,所以不需要像c、 java那樣在變量賦值時(shí)需要聲明變量的類型。
c 變量賦值
int x = 1;
python 變量賦值
x = 1
y = "hello world!"
a = [1, 2]
b = ('a', 'b')
c = {"foo": "bar"}
python 變量賦值中,所涉及到的變量命名是有一定規(guī)則的:
1. 變量名只能包含字母、數(shù)字和下劃線。變量名可以字母或下劃線開頭,但不能以數(shù)字開頭,例如,可將變量命名為name_1,但不能將其命名為1_name
2.?變量名不能包含空格,但可使用下劃線來分隔其中的單詞。例如,變量名name_one可行,但變量名name one會(huì)引發(fā)錯(cuò)誤。
3.?不要將Python關(guān)鍵字和函數(shù)名用作變量名,即不要使用Python保留用于特殊用途的單詞,如not、pass等。
4.?變量名應(yīng)既簡(jiǎn)短又具有描述性。例如,name比n好,student_name比s_n好,name_length比length_of_persons_name好, 雖說簡(jiǎn)短好,但是不能依照自己的意愿隨意簡(jiǎn)寫,盡量使用大家約定俗成的簡(jiǎn)寫,如果不是還不如寫全拼。
5. python 變量名中大小寫敏感,所以 NAME, Name, name 代表三個(gè)不同的表里名, 這里提一下就是慎用小寫字母l和大寫字母O,因給他們可能被人錯(cuò)看成數(shù)字1和0;
再說變量賦值中賦予給變量的值,python中萬事皆對(duì)象,所以python中只要是對(duì)象就能給變量賦值。如:
x = 1 # x賦值為數(shù)字1;
x = sum # x賦值為內(nèi)建求和函數(shù)sum;
python的賦值真實(shí)上說應(yīng)該不是賦值,而更像是“引用”,如何理解“引用”呢,python中一直對(duì)象的生成是會(huì)在內(nèi)存中分配給一個(gè)內(nèi)存地址,這個(gè)內(nèi)存地址可以使用id()方法去獲取,然后在變量賦值時(shí),將變量直接引用該對(duì)象的內(nèi)存地址,進(jìn)而完成變量賦值,如:
x = 1, 賦值時(shí)x直接引用1所在內(nèi)存的地址, y = x, 此時(shí)是y直接引用x的所指向的內(nèi)存地址
python中有判斷變量的方法如 is() 和 ==,二者在判斷變量時(shí)是有區(qū)別的,is函數(shù)是判斷變量的內(nèi)存地址是否相同,而 == 是判斷變量的值是否相同,舉例說明:
a = 1; b = 1.0
a is b? # False
a == b # True
小心python變量賦值的陷阱
看到上面的所述知道了python變量賦值實(shí)則是引用,引用的是對(duì)象的內(nèi)存地址。所賦的值可以分兩類,一類是可變的,如列表,字典,集合;一類是不可變的,如字符串、元組。所以當(dāng)對(duì)象為可變類型時(shí)就會(huì)出現(xiàn)一種情景,我們舉例說明:
x = [1, 2, 3]
y = x
print x == y? ? # True
print x is y? ? # True
print x? ? ?# [1, 2, 3]
print y? ? ?# [1, 2, 3]
y.append(4)
print x? ? # [1, 2, 3, 4]
print y? ? # [1, 2, 3, 4]
可以看到y(tǒng)在進(jìn)行調(diào)整時(shí)(添加了一個(gè)元素),x也跟著變動(dòng)了,這進(jìn)一步說明了,python中的變量賦值時(shí)引用,x,y 賦值時(shí)指向了同一處內(nèi)存地址,所以當(dāng)y變動(dòng)時(shí),x同樣也發(fā)送了變化,解決這中現(xiàn)象的方法可以是x, y = [1,2,3], [1,2,3]這樣賦值,雖說此時(shí) x==y 是True,但是確實(shí)是2個(gè)不同的內(nèi)存地址,所以 x is y 則是 False。或者可以使用copy模塊,實(shí)質(zhì)是相同的,創(chuàng)建2個(gè)不同的內(nèi)存地址,使其分離。
python賦值語句規(guī)則如下:
賦值語句必須是在賦值號(hào)(=)的左邊是變量或?qū)ο蟮哪硞€(gè)屬性,不能是表達(dá)式。
1、賦值號(hào)(=)的右邊是變量值、對(duì)象屬性的值、表達(dá)式的值、計(jì)算式的值、函數(shù)值等等,不能是變量或?qū)ο蟆?/p>
2、賦值語句是由賦值表達(dá)式再加上分號(hào)構(gòu)成的表達(dá)式語句。其一般形式為:變量=表達(dá)式,賦值語句的功能和特點(diǎn)都與賦值表達(dá)式相同。它是程序中使用最多的語句之一。
3、在賦值語句的使用中需要注意以下幾點(diǎn):由于在賦值符“=”右邊的表達(dá)式也可以又是一個(gè)賦值表達(dá)式。因此,下述形式變量=(變量=表達(dá)式)是成立的,從而形成嵌套的情形。
其展開之后的一般形式為:變量=變量=表達(dá)式。例如:a=b=c=d=e=5,按照賦值運(yùn)算符的右接合性,因此實(shí)際上等效于:e=5、d=e、c=d、b=c、a=b。
Python簡(jiǎn)介:
Python由荷蘭數(shù)學(xué)和計(jì)算機(jī)科學(xué)研究學(xué)會(huì)的吉多·范羅蘇姆于1990年代初設(shè)計(jì),作為一門叫做ABC語言的替代品。Python提供了高效的高級(jí)數(shù)據(jù)結(jié)構(gòu),還能簡(jiǎn)單有效地面向?qū)ο缶幊獭?/p>
Python語法和動(dòng)態(tài)類型,以及解釋型語言的本質(zhì),使它成為多數(shù)平臺(tái)上寫腳本和快速開發(fā)應(yīng)用的編程語言,隨著版本的不斷更新和語言新功能的添加,逐漸被用于獨(dú)立的、大型項(xiàng)目的開發(fā)。
以上內(nèi)容參考:百度百科—Python
表示把函數(shù)chooseCave()的返回值賦值給變量caveNumber;
函數(shù)沒有return 或者只有return,返回值為None;否則返回return后面的值;