Python---基本知識12之常用數(shù)據(jù)類型列表

什么是列表?

列表就是可變的有序的元素集合错蝴,列表里面的每一個元素都有他的下標(biāo)洲愤,其實python里面的列表就有些像java里面的數(shù)值,

列表的表現(xiàn)形式:從下面這個列表我們可以看出來顷锰,列表是用一對[]柬赐,然后里面的類型是object,什么類型都可以官紫,也可以嵌套列表肛宋;

name=['zhangsan','lisi',18,19,True,[8,6]]

列表的賦值方式:上面就是一種賦值方式,直接賦值束世,還有一個range()函數(shù)也可以完成列表的賦值:這個函數(shù)酝陈,有3個參數(shù),第一個參數(shù)是起始位置毁涉,然后是終點位置沉帮,最后一個是步長,也是左閉右開區(qū)間贫堰;對于range()函數(shù)穆壕,需要注意一點就是在python3里面你用到這個列表的時候才會生成,如果你沒有用到這個列表是不會生成的

age=range(5,91,2)

第二種賦值方式:列表推導(dǎo)式严嗜,用for ?in 語句粱檀,用這種方式可以把一個列表進行克隆或者是說變大或者縮兄薷摇漫玄;

age=[1,2,3,5,7,9,11]

age1=[num for num in age if num%2==0]

print(age1)

列表的常用操作,這個對于列表來說還是比較重要的压彭,就和之前說的字符串的常用操作一樣睦优,主要有四種常用操作:

增:

A:通過append()語句,用于在列表的末尾增加一個元素壮不;

age = [9]

age.append(10)

print(age)

B:通過insert語句汗盘,可以把一個object插入你想插入的地方;

age = [9]

age.insert(0,10)

print(age)

C:通過extend()語句询一,可以把一個列表增加多個值隐孽,但是這些值也是只能增加在最后癌椿;

tag=[2,8,10]

age = [9]

age.extend(tag)

print(age)

D:通過乘法運算和加法運算也可以把列表增加:乘法就是把自己乘多少遍,加法就是在最后連接一個列表菱阵,需要注意一點就是這兩種方式不會修改原列表踢俄;

tag='woshishui'

age = [9]

age*=5

age+=tag

print(age)

刪:

A:pop()語句,刪除對應(yīng)下標(biāo)值的元素晴及;默認(rèn)是-1都办,即最后一個元素;

age=[1,2,3,4,5,6,7,8]

age.pop(0)

print(age)

B:remove()語句虑稼,刪除對應(yīng)的object元素琳钉,默認(rèn)是移除最左邊的一個object

age=[1,2,3,4,5,6,7,8]

age.remove(1)

print(age)

C:del語句,這個就厲害了蛛倦,這個會刪除內(nèi)存地址歌懒,即會把你的存儲空間都刪掉

age=[1,2,3,4,5,6,7,8]

del age

改:可以通過下標(biāo)值去直接修改object,需要注意的是[]里面的值是下標(biāo)值;

age = [1, 2, 3, 4, 5, 6, 7, 8]

age[1] = 8

print(age)

查:

A:獲取單個元素

age = [1, 2, 3, 4, 5, 6, 7, 8]

print(age[2])

B:獲取元素索引溯壶,Index()語句歼培,第一個元素是object值,第二個元素是起始位置茸塞,第三個元素是終點位置躲庄;

age = [1, 2, 3, 4, 5, 6, 7, 8,2,8,2]

print(age.index(2,-2))

C:獲取指定元素個數(shù):count()

age = [1, 2, 3, 4, 5, 6, 7, 8,2,8,2]

print(age.count(2))

D:切片,就和string一個形式钾虐,第一個參數(shù)是起始位置噪窘,第二個參數(shù)是終點位置,第三個參數(shù)是步長效扫,需要注意一點就是中間是用:間隔符倔监;如果步長是負(fù)數(shù),就是從最后一個開始往前面取值菌仁,

age = [1, 2, 3, 4, 5, 6, 7, 8, 2, 8, 2]

print(age[1:8: 2])

E:反轉(zhuǎn)[::-1]

age = [1, 2, 3, 4, 5, 6, 7, 8, 2, 8, 2]

print(age[:: -1])

F:遍歷

F.1通過元素進行遍歷:

age = ['a','v','f','g','s','w']

for v in age:

????print(v)

F.2通過索引進行遍歷:首先應(yīng)該得到元素的索引浩习,然后通過索引就能拿到元素的值了:

age = ['a','v','f','g','s','w']

indexs=range(len(age))

for v in indexs:

????print(age[v])

F.3通過枚舉對象遍歷:通過枚舉函數(shù),將一個可遍歷的對象生成一個新的對象济丘,這個對象的每一個元素都包含之前對象的下標(biāo)和對應(yīng)值谱秽;由于枚舉對象的每一個元素都是一個元祖對象,所以也可以這樣寫 a,b

age = ['a','v','f','g','s','w'] ? ? ? ? ? ? ? ? ? ? ? ? ? ?

enum =enumerate(age)

for e in enum:

????print(e)

age = ['a','v','f','g','s','w']

enum =enumerate(age)

for a,b in enum:

????print(a,b)

F.4通過迭代器進行遍歷:在講通過迭代器進行遍歷之前摹迷,需要講兩個概念一個就是可迭代對象疟赊,一個是迭代器,可迭代對象實際上就是指這個對象擁有遍歷的這個屬性峡碉,可以使用for in進行遍歷近哟,那么這個對象就是可迭代對象,另外一個使用一個函數(shù)進行驗證鲫寄,isinstance吉执,這個函數(shù)相當(dāng)于是判斷這個對象是否擁有這個能力疯淫,

判斷是否可迭代

import collections

age = ['a','v','f','g','s','w']

result=isinstance(age,collections.Iterable)

print(result)

那么什么又是迭代器呢,迭代器是可以記錄遍歷位置的對象戳玫,也就是說你把一個列表轉(zhuǎn)成迭代器之后峡竣,迭代器本身就擁有了遍歷的能力了,也就是可以自己完成遍歷了量九,當(dāng)然迭代器也是可迭代對象适掰,所以自然也可以用for in 語句,把一個可迭代對象轉(zhuǎn)成迭代器使用:iter()函數(shù)荠列;判斷是否是迭代器也有兩種方式类浪,第一就是可不可以自己完成遍歷過程,也就是調(diào)用next()函數(shù)肌似,第二也是用isinstance函數(shù)费就,

it=iter(age)

result=isinstance(it,collections.Iterator)

next(it)

print(result)

===========================

it=iter(age)

result=isinstance(it,collections.Iterator)

next(it) for i in it:

????print(i)

print(result)

迭代器的優(yōu)點:節(jié)約內(nèi)存空間,他只有一個內(nèi)存地址保存當(dāng)前遍歷到的對象川队,這之前力细,之后的對象都沒有分配內(nèi)存地址,也提供了統(tǒng)一的針對可迭代對象進行遍歷的接口固额;需要注意一點是迭代器只能迭代一次眠蚂,不能多次使用;

G:判定斗躏,判斷一個元素是否在一個集合里面逝慧,用in ?not in語句;

age = ['a','v','f','g','s','w']

newStr='a'

newStr1='l'

result=newStr in age

result1=newStr1 not in age

print(result,result1)

H:比較啄糙,對于比較的話笛臣,python2用的是cmp()函數(shù),而python3用的是比較符:> < ==

H.1 python3:

list = [1, 9, 6]

list1 = [1, 8, 7]

resule = list > list1

print(resule)

H.2 python2

list = [1, 9, 6]

list1 = [1, 8, 7]

result=cmp(list1,list)

print(result)

I.排序隧饼,有兩種方式沈堡,一種就是用內(nèi)建函數(shù),sorted,第二種用列表對象方法燕雁,list.sort()兩種方法都是大同小異诞丽,先說第一種:

list=['k','a','s','w','j']

result=sorted(list,reverse=True)

print(result)

reverse控制的是增序,還是降序贵白,默認(rèn)是增序率拒,設(shè)置為True就是降序崩泡;還有一種情況就是指定排序的元素禁荒,比如:這種情況就針對一個元素有多個值得情況,我們可以讓它對哪個進行排序角撞;

list=[('n',5),('w',8),('h',9),('t',1),('b',3),('l',7)]

def getkey(x):

????return x[1]

result=sorted(list,key=getkey)

print(result)

list.sort()方法呛伴,是針對于列表本身得勃痴,所以通過這種方式改變得是列表本身,也并沒有返回值热康,sorted方法呢沛申,是內(nèi)建函數(shù),他不會改變列表本身姐军,只會將列表排好序之后返回出來铁材;

J:亂序,就是把列表得順序打亂奕锌,通過得是random得shuffle()函數(shù)著觉,打亂得是列表本身

list=[('n',5),('w',8),('h',9),('t',1),('b',3),('l',7)]

random.shuffle(list)

print(list)

K:反轉(zhuǎn),兩種方式惊暴,一種是直接調(diào)用:reverse()饼丘,這種方式反轉(zhuǎn)得是列表自己,另一種用切片反轉(zhuǎn)辽话;這種方式肄鸽,列表不會改變:

list.reverse()

res=list[::-1]

好了 ,列表所有操作結(jié)束了油啤;

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末典徘,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子益咬,更是在濱河造成了極大的恐慌烂斋,老刑警劉巖,帶你破解...
    沈念sama閱讀 219,366評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件础废,死亡現(xiàn)場離奇詭異汛骂,居然都是意外死亡,警方通過查閱死者的電腦和手機评腺,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,521評論 3 395
  • 文/潘曉璐 我一進店門帘瞭,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人蒿讥,你說我怎么就攤上這事蝶念。” “怎么了芋绸?”我有些...
    開封第一講書人閱讀 165,689評論 0 356
  • 文/不壞的土叔 我叫張陵媒殉,是天一觀的道長。 經(jīng)常有香客問我摔敛,道長廷蓉,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,925評論 1 295
  • 正文 為了忘掉前任马昙,我火速辦了婚禮桃犬,結(jié)果婚禮上刹悴,老公的妹妹穿的比我還像新娘。我一直安慰自己攒暇,他們只是感情好土匀,可當(dāng)我...
    茶點故事閱讀 67,942評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著形用,像睡著了一般就轧。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上田度,一...
    開封第一講書人閱讀 51,727評論 1 305
  • 那天钓丰,我揣著相機與錄音,去河邊找鬼每币。 笑死携丁,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的兰怠。 我是一名探鬼主播梦鉴,決...
    沈念sama閱讀 40,447評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼揭保!你這毒婦竟也來了肥橙?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,349評論 0 276
  • 序言:老撾萬榮一對情侶失蹤秸侣,失蹤者是張志新(化名)和其女友劉穎存筏,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體味榛,經(jīng)...
    沈念sama閱讀 45,820評論 1 317
  • 正文 獨居荒郊野嶺守林人離奇死亡椭坚,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,990評論 3 337
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了搏色。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片善茎。...
    茶點故事閱讀 40,127評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖频轿,靈堂內(nèi)的尸體忽然破棺而出垂涯,到底是詐尸還是另有隱情,我是刑警寧澤航邢,帶...
    沈念sama閱讀 35,812評論 5 346
  • 正文 年R本政府宣布耕赘,位于F島的核電站,受9級特大地震影響膳殷,放射性物質(zhì)發(fā)生泄漏操骡。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,471評論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望当娱。 院中可真熱鬧吃既,春花似錦考榨、人聲如沸跨细。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,017評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽冀惭。三九已至,卻和暖如春掀鹅,著一層夾襖步出監(jiān)牢的瞬間散休,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,142評論 1 272
  • 我被黑心中介騙來泰國打工乐尊, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留戚丸,地道東北人。 一個月前我還...
    沈念sama閱讀 48,388評論 3 373
  • 正文 我出身青樓扔嵌,卻偏偏與公主長得像限府,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子痢缎,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,066評論 2 355

推薦閱讀更多精彩內(nèi)容