python降序排列说true不存在_Python数据类型串讲(中)
1、序列
1.1 序列簡(jiǎn)介
所謂序列,即元素的有序排列。序列中每個(gè)位置的元素都有其對(duì)應(yīng)的唯一編號(hào),也就是說(shuō)我們可以通過(guò)元素的位置標(biāo)識(shí),去搜索到該元素。python中的內(nèi)建序列有6種:列表、元祖、字符串、Unicode字符串、xrange對(duì)象、buffer對(duì)象,其中列表和元祖是最常見(jiàn)的序列,應(yīng)重點(diǎn)掌握。字符串在上一篇文章中已簡(jiǎn)單介紹,下面將以字符串為例,對(duì)序列的通用操作進(jìn)行詳講。
1.2 序列通用操作
索引(indexing)
序列的索引即上文介紹的序列中元素的位置標(biāo)識(shí),按標(biāo)識(shí)順序分為正向遞增序號(hào)(簡(jiǎn)稱正序)和逆向遞減序號(hào)(簡(jiǎn)稱逆序)。正序標(biāo)識(shí)即由左往右,索引從0開(kāi)始遞增,索引為0表示第一個(gè)元素,索引為1表示第二個(gè)元素,以此類(lèi)推。以變量x='HELLO WORLD!'為例:
逆序標(biāo)識(shí)即由右往左,索引從-1開(kāi)始,索引為-1表示逆序第一個(gè)元素,索引為-2表示逆序第二個(gè)元素,以此類(lèi)推。以字符串'HELLO WORLD!'為例:
根據(jù)字符串的索引,我們可以提取出對(duì)應(yīng)位置上的元素,例如需要提取字符'R',可以使用正索引即'x[8]'去提取,也可以使用逆索引即'x[-4]'去提取。
x='HELLO WORLD!'#正序提取x[8]#逆序提取x[-4]
以上代碼執(zhí)行結(jié)果為:
切片(sliceing)
使用索引提取序列元素不需要新創(chuàng)建變量,非常方便,但使用索引每次只能提取字符串中的單個(gè)字符,而實(shí)際運(yùn)用中往往需要一次提取多個(gè)字符,這時(shí)便可以使用序列的另一特性:切片。切片是指通過(guò)序列的索引提取出指定范圍內(nèi)的元素作為新的序列。
語(yǔ)法:obj [startindex:endindex:step]
obj:變量名
start_index:[可選參數(shù)],切片起始索引,默認(rèn)為0(正序)或-1(逆序)
end_index:[可選參數(shù)],切片結(jié)束索引,默認(rèn)為最后一個(gè)元素對(duì)應(yīng)索引(正序),或第一個(gè)元素對(duì)應(yīng)索引(逆序)
step:切片步長(zhǎng),默認(rèn)為1
注意:序列中切片取值范圍為左閉右開(kāi),即包含起始索引,不包含結(jié)束位置。
x='HELLO WORLD!'
############ 提取字符'LLO'###########
x[2:5:1] #使用正索引
x[-10:-7:1] #使用負(fù)索引
x[2:5] #步長(zhǎng)為1時(shí)可省略參數(shù)step
############ 提取字符'WRD'###########
x[6:11:2] #使用正索引,步長(zhǎng)為2
x[-6:-1:2] #使用負(fù)索引,步長(zhǎng)為2
############ 提取字符'LRO'###########
x[-3:-6:-1] #使用負(fù)索引,逆序提取
x[9:6:-1] #使用正索引,逆序提取
############ 正序提取所有字符 ##########
x[::] #三個(gè)參數(shù)皆可省略
############ 逆序提取所有字符 ##########
x[::-1] #步長(zhǎng)為-1,不可省略
注意:正序提取時(shí),起始索引應(yīng)小于結(jié)束索引;逆序提取時(shí),起始索引應(yīng)大于結(jié)束索引,否則返回值為空序列 []。
相加(adding)
序列中類(lèi)型相同的序列可以進(jìn)行加法操作,即把兩個(gè)或多個(gè)序列拼接起來(lái),注意不是數(shù)值上的加法運(yùn)算(元素為數(shù)字型時(shí)容易混淆)。
x1='talk is cheap'x2=','x3='show me the code'print(x1+x2+x3)
以上代碼執(zhí)行結(jié)果為:
相乘(multiplying)
類(lèi)似于數(shù)學(xué)運(yùn)算上的乘法運(yùn)算,一個(gè)序列乘上一個(gè)正整數(shù)n,相當(dāng)于將該字符串重復(fù)n次連接成一個(gè)新序列。
x='python 'print(x*3)
以上代碼執(zhí)行結(jié)果為:
元素存在判斷
使用python的關(guān)鍵字“in”或“not in”,可以判斷指定元素是否存在該序列中或是否不存在該序列中,滿足條件則返回True ,不滿足條件則返回False 。
x='python ''t' in x'i' in x
以上代碼執(zhí)行結(jié)果為:
序列相關(guān)BIF
len():返回序列所含元素的數(shù)量
max():返回元素中的最大值
min():返回元素中的最小值
x='python'len(x)max(x)min(x)
當(dāng)序列中元素的類(lèi)型是字符串型時(shí),使用max()或min()將對(duì)字符串進(jìn)行按位比較,即對(duì)字符串中各元素的ascii碼進(jìn)行比較,輸出最大值或最小值。
2、列表
在對(duì)序列有了大體的認(rèn)識(shí)后,現(xiàn)在開(kāi)始介紹序列中最具代表性的數(shù)據(jù)類(lèi)型——列表。
python中列表以中括號(hào)'[ ]'為標(biāo)識(shí),將一個(gè)或多個(gè)元素(以逗號(hào)分隔)括起來(lái)為一個(gè)列表,其元素可以為python中任意一種數(shù)據(jù)類(lèi)型包括列表本身,且各元素不需要具備相同的數(shù)據(jù)類(lèi)型。列表可以簡(jiǎn)單理解為我們?nèi)粘I钪谐忻刻斓馁?gòu)物記錄,其中每個(gè)人的購(gòu)物記錄為列表中的元素,每個(gè)人可以購(gòu)買(mǎi)不同類(lèi)型的物品,且購(gòu)買(mǎi)數(shù)量往往不一致。
#創(chuàng)建列表x_listx_list=[2333,'python',['a','b','c']]print(x_list)
以上代碼執(zhí)行的結(jié)果為:
除了上面1.2節(jié)介紹的序列通用操作外,列表還有其他一些比較常用的操作。
2.1 元素的更新
2.1.1 元素的修改
列表通過(guò)直接對(duì)元素的索引位置賦新值來(lái)修改元素。
語(yǔ)法:變量名[需修改元素的索引]=新值
#將變量x_list索引為0的元素修改為2222x_list[0]=2222print(x_list)
以上代碼執(zhí)行結(jié)果為:
2.1.2 元素的刪除
列表通過(guò)對(duì)元素的索引位置,使用del語(yǔ)句來(lái)刪除列表的元素。
del 列表名[需刪除元素的列表]
#刪除變量x_list索引為1的元素del x_list[1]print(x_list)
以上代碼執(zhí)行結(jié)果為:
2.2 常用方法
2.2.1 元素的增加
append():在列表最后添加一個(gè)新的元素語(yǔ)法:列表名.append(添加的元素)#在列表x_list最后添加元素'MySQL'x_list.append('MySQL')print(x_list)以上代碼執(zhí)行結(jié)果為:注意:若添加的新元素為列表,append()會(huì)保存其列表形式添加到最后#在列表x_list最后添加元素['MySQL','SPSS']x_list=[2333,'python',['a','b','c']]x_list.append(['MySQL','SPSS'])print(x_list)以上代碼執(zhí)行結(jié)果為:extend():在列表最后添加一個(gè)新列表內(nèi)的多個(gè)元素語(yǔ)法:列表名.extend(添加的列表)與方法append()不同,extend()中添加的元素只能是列表類(lèi)型,且不保存其列表形式,即將需要添加的列表里的元素一一提取出來(lái)后再添加到原列表。x_list=[2333,'python',['a','b','c']]x_list.extend(['MySQL','SPSS'])print(x_list)以上代碼執(zhí)行的結(jié)果為:insert():根據(jù)指定索引插入新的元素語(yǔ)法:列表名.insert(插入位置的索引,插入的元素)#在變量索引為1的位置插入元素'MySQL'x_list=[2333,'python',['a','b','c']]x_list.insert(1,'MySQL')print(x_list)以上代碼執(zhí)行結(jié)果為:2.2.2 元素的刪除
pop():刪除指定索引(默認(rèn)為-1)對(duì)應(yīng)的元素,并返回所刪除的值語(yǔ)法:列表名.pop(索引值)#刪除變量中索引為1的元素x_list=[2333,'python',['a','b','c']]x_list.pop(1)print(x_list)以上代碼執(zhí)行結(jié)果為:remove():刪除指定元素,若匹配到多項(xiàng),僅刪除匹配到的第一項(xiàng)語(yǔ)法:列表名.remove('需刪除的元素')#刪除指定元素'a',僅刪除匹配到的第一項(xiàng)z_list=['a','b','c','a']z_list.remove('a')print(z_list)以上代碼執(zhí)行結(jié)果為:clear():清空列表里所有元素,返回一個(gè)空列表語(yǔ)法:列表名.clear()#清空變量x_list的所有元素x_list=[2333,'python',['a','b','c']]x_list.clear()print(x_list)以上代碼執(zhí)行結(jié)果為:2.2.3 元素的查找
index():查找元素首次出現(xiàn)位置對(duì)應(yīng)的正索引語(yǔ)法:列表名.index(查找的元素,起始索引,結(jié)束索引)#查找元素'python'在變量x_list中首次查找到位置的索引x_list=[2333,'python',['a','b','c']]x_list.index('python')以上代碼執(zhí)行的結(jié)果為:注意:若查找的元素不在該列表中會(huì)報(bào)錯(cuò)誤提示。count():查找元素在該列表中出現(xiàn)的次數(shù)語(yǔ)法:列表名.count(查找的元素)#查找元素'python'在變量x_list中出現(xiàn)的次數(shù)y_list=[2,3,4,5,2,2,3]y_list.count(2)以上代碼執(zhí)行結(jié)果為:注意:列表中沒(méi)有方法find()。2.2.4 元素的排序
sort():對(duì)列表元素進(jìn)行排序,返回元素按升序(默認(rèn))或降序排列的列表語(yǔ)法:列表名.sort(reverse=True/False)reverse:可選參數(shù),默認(rèn)為T(mén)rue即升序,若為False即降序#對(duì)變量y_list的元素進(jìn)行降序排列y_list=[2,3,4,5,2,2,3]y_list.sort(reverse=True)print(y_list)以上代碼執(zhí)行結(jié)果為:reverser():將列表內(nèi)元素按逆序排列語(yǔ)法:列表名.reverser()#對(duì)y_list的元素進(jìn)行逆序排列y_list=[2,3,4,5,2,2,3]y_list.reverser()print(y_list)以上代碼執(zhí)行結(jié)果為:2.2.5 列表的復(fù)制
copy():用于復(fù)制列表用法:列表名.copy()y_list=[2,3,4,5,2,2,3]y=y_list.copy()print(y)
以上代碼執(zhí)行結(jié)果為:
注意區(qū)分賦值、淺復(fù)制copy()、深復(fù)制deepcopy():
賦值:對(duì)象的簡(jiǎn)單引用淺復(fù)制:復(fù)制列表的父對(duì)象,但不復(fù)制對(duì)象內(nèi)部的子對(duì)象深復(fù)制:復(fù)制列表的父對(duì)象及子對(duì)象,需先導(dǎo)入copy模塊2.3 常用內(nèi)置函數(shù)
除了序列通用的內(nèi)置函數(shù):len()、max()、len(),列表還含有以下內(nèi)置函數(shù):
list():將其他類(lèi)型強(qiáng)制轉(zhuǎn)化為列表zip():將多個(gè)列表或元祖(后續(xù)會(huì)介紹)對(duì)應(yīng)位置的元素組合為元祖,返回 zip對(duì)象enumerate():將一個(gè)可遍歷對(duì)象(如列表、字符串)組合成一個(gè)含數(shù)據(jù)和數(shù)據(jù)索引的序列3、元祖
3.1 元祖簡(jiǎn)介
元祖與列表一樣是python的一種序列類(lèi)型,可以使用序列的所有通用操作。元祖在python中以小括號(hào)“()”為標(biāo)識(shí),將一個(gè)或多個(gè)元素(以逗號(hào)分隔)括起來(lái)為一個(gè)元祖,其用法與列表非常類(lèi)似,二者主要區(qū)別在于,列表內(nèi)的元素可以修改,元祖內(nèi)的元素不能修改,可以簡(jiǎn)單把元祖理解為列表的一個(gè)“可讀版本”。
#元祖的創(chuàng)建x_tuple=('a',2,[3,4])print(x_tuple)#元素修改會(huì)報(bào)錯(cuò)x_tuple[1]=3
以上代碼執(zhí)行結(jié)果為:
注意:創(chuàng)建只有一個(gè)元素的元祖時(shí),需要在后面加一個(gè)逗號(hào),否則會(huì)返回元素本身。因?yàn)樵趐ython中小括號(hào)“()”同時(shí)也是數(shù)學(xué)運(yùn)算上的一個(gè)基本符號(hào),如(1+1)^2,如果創(chuàng)建只有一個(gè)元素的元祖時(shí)不加逗號(hào)分隔,python解釋器會(huì)將小括號(hào)識(shí)別為數(shù)學(xué)運(yùn)算符號(hào)。
y_tuple=(2333,)print(y_tuple)z_tuple=(2333,)print(z_tuple)
以上代碼執(zhí)行結(jié)果為:
3.2 常用方法及內(nèi)置函數(shù)
3.2.1 常用方法
由于元祖的元素不可變性,元祖無(wú)法對(duì)元素進(jìn)行增加、刪除、排序及復(fù)制操作,元祖中元素的查找與上述列表中用法一致。
x_tuple=('a',2,[3,4])#元素的查找x_tuple.index('a')#元素的復(fù)制x_tuple.count(2)
以上代碼執(zhí)行的結(jié)果為:
注意:當(dāng)元祖中所含元素為列表(可變序列)時(shí),該列表嵌套項(xiàng)是可變的。
x_tuple=('a',2,[3,4])#修改列表[3,4]中的元素,元祖也隨之'變化'x_tuple[2][1]=3print(x_tuple)
以上代碼執(zhí)行結(jié)果為:
3.2.2 常用內(nèi)置函數(shù)
len(tuple):返回元祖元素的個(gè)數(shù)max(tuple):返回元祖元素最大值min(tuple):返回元祖元素最小值tuple(seq):將序列轉(zhuǎn)換為元祖3.2.3 選擇元祖or列表
特點(diǎn):列表:動(dòng)態(tài)存儲(chǔ),長(zhǎng)度大小可變,可對(duì)元素進(jìn)行增刪查改等操 作,但儲(chǔ)存內(nèi)存較大,性能偏差;元祖:靜態(tài)存儲(chǔ),長(zhǎng)度大小固定,不可隨意更新數(shù)據(jù),內(nèi)存占用空間小,處理速度快;使用場(chǎng)景:列表:需隨時(shí)對(duì)數(shù)據(jù)進(jìn)行更改,不考慮性能;元祖:1. 數(shù)據(jù)需要被“鎖定”,不能隨意更改; 2. 對(duì)性能有要求,如遍歷; 3. 作為數(shù)據(jù)結(jié)構(gòu)的一部分,如字典的key
總結(jié)
以上是生活随笔為你收集整理的python降序排列说true不存在_Python数据类型串讲(中)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
 
                            
                        - 上一篇: 找出两列表共有的元素python,两个列
- 下一篇: es like模糊匹配_es 基于mat
