第5課 列表和元組(20191121)

一淑廊、列表和元組

1.序列:是一種包含多項(xiàng)數(shù)據(jù)(元素)的數(shù)據(jù)結(jié)構(gòu),通過索引來訪問序列中的每個(gè)元素旧烧。

1)常用的三種數(shù)據(jù)結(jié)構(gòu):列表(list)影钉、元組(tuple)和字典(dict)。因?yàn)樵诔绦蛑胁粌H需要用變量來保存單個(gè)數(shù)據(jù)掘剪,還需要使用多種數(shù)據(jù)結(jié)構(gòu)來保存大量的數(shù)據(jù)平委,而列表、元組和字典就是用來保存大量數(shù)據(jù)的夺谁。

2)字符串也是一種序列廉赔。

2.列表和元組的區(qū)別:

1)元組是不可變的,元組一旦建立構(gòu)建出來,程序就不能修改元組中所包含的成員。在程序中如果只是固定的保存多個(gè)數(shù)據(jù)項(xiàng)大渤,不需要修改它們,此時(shí)就應(yīng)該使用元組眶痰。比如Python要求字典的Key必須是不可變的,此時(shí)程序只能使用元組來保存Key。

2)列表是可變的,程序可以修改列表所包含的元素琅摩。

3)字符串也是不可變的,程序不可以修改字符串中的字符序列锭硼,替換字符時(shí)只能重新組成一個(gè)新的字符串房资,不能修改原有字符串字符。

3.創(chuàng)建列表和元組

1)創(chuàng)建列表使用方括號[], 元素之間用英文逗號( ,)隔開账忘。

>>>my_list = [‘Jeff’志膀,8, ‘boy’]

>>>print(my_list)

2)創(chuàng)建元組使用圓括號(),元素之間用英文逗號( ,)隔開鳖擒。

>>>my_tuple = (‘Jeff’溉浙,8, ‘boy’)

>>>print(my_tuple)

4.通過索引使用元素

1)列表和元組都可以通過索引來訪問元素,它們的索引都是從0開始蒋荚,第一個(gè)元素的索引為0戳稽,第二個(gè)元素的索引為1,以此類推期升。它們也都支持負(fù)數(shù)索引惊奇,倒數(shù)第一個(gè)元素的索引為-1,倒數(shù)第二個(gè)的索引為-2播赁,以些類推颂郎。(同前面所講字符串的索引)例如:

#訪問列表的元素

>>>my_list = [‘Jeff’,8, ‘boy’]

>>>print(my_list)

>>>print(my_list[0]) #Jeff

>>>print(my_list[1]) #8

>>>print(my_list[2]) #boy

#訪問元組的元素

>>>my_tuple = (‘Jeff’容为,8, ‘boy’)

>>>print(my_tuple)

>>>print(my_tuple[0]) #Jeff

>>>print(my_tuple[1]) #8

>>>print(my_tuple[2]) #boy2)

列表的元素相當(dāng)于一個(gè)變量乓序,程序既可以使用它的值,也可以對它重新賦值坎背。元組的元素相當(dāng)于一個(gè)常量替劈,程序只可以引用它的值,不能對它重新賦值得滤。

5.通過索引獲取子序列(中間一段):列表和元組同樣可以使用索引陨献,來獲取中間一段元素,這種方法叫做slice(切片)懂更。(同前面所講字符串一樣)例如:

格式為:[start : end: step]

#訪問第2個(gè)到第4個(gè)元素(不包含4)

>>>my_tuple =(‘a(chǎn)’,’b’,’c’,’d’,’e’’f’,’g’)

>>>print(my_tuple[2:4] # ('c', 'd')

#訪問第2個(gè)到倒數(shù)第2個(gè)元素(不包含倒數(shù)第2)

>>>print(my_tuple[2:-2] #('c', 'd', 'e')

# 訪問倒數(shù)第3個(gè)到倒數(shù)第1個(gè)(不包含倒數(shù)第1)

>>>print(my_tuple[-3:-1] # ('e', 'f') , 注意不是[-1:-3]

二眨业、列表和元組支持的運(yùn)算

1.加法: 列表和元組都支持加法運(yùn)算,結(jié)果就是兩個(gè)列表和元組的元素總和沮协。例如:

#兩個(gè)元組相加

>>> tuple1 =('a','b','c',1,2,3)

>>> tuple2 =('c','d','e',4,5,6)

>>> sum_tuple = tuple1+tuple2

>>> print(sum_tuple)? #('a', 'b', 'c', 1, 2, 3, 'c', 'd', 'e', 4, 5, 6)

>>>print(tuple1+('c','d','e',4,5,6))? #('a', 'b', 'c', 1, 2, 3, 'c', 'd', 'e', 4, 5, 6)

#兩個(gè)列表相加

>>> list1 =['a','b','c',1,2,3]

>>> list2 =['c','d','e',4,5,6]

>>> sum_list = list1+list2

>>> print(sum_list) #['a', 'b', 'c', 1, 2, 3, 'c', 'd', 'e', 4, 5, 6]

>>>print(list1+['c','d','e',4,5,6])? #['a', 'b', 'c', 1, 2, 3, 'c', 'd', 'e', 4, 5, 6]

2.乘法:列表和元組都可以和整數(shù)進(jìn)行乘法運(yùn)算坛猪,結(jié)果就是把它們所包含的元素重復(fù)N次。例如:

>>>a_tuple = (‘a(chǎn)’,b’,’c’)

>>>mul_tuple =a_tuple*3

>>>print(mul_tuple) #(‘a(chǎn)’,b’,’c’, ‘a(chǎn)’,b’,’c’, ‘a(chǎn)’,b’,’c’)

3.In運(yùn)算:用于判斷列表和元組中是否皂股。例如:

>>>a_tuple = (‘a(chǎn)’,b’,’c’)

>>>print(‘a(chǎn)’ in a_tuple) # Ture

>>>print(‘x’ in a_tuple) #False

4.長度:Python提供了內(nèi)置函數(shù)len()來獲取元組或列表的長度墅茉。例如:

>>>a_tuple = (‘a(chǎn)’,b’,’c’)

>>>print(len(a_tuple)) # 3

5.最大值和最小值:Python提供了內(nèi)置函數(shù)max()和min()來獲取元組或列表的最大值和最小值。例如:

>>>a_tuple = (‘a(chǎn)’,b’,’c’)

>>>b_tuple = (‘a(chǎn)bc’,’acd’,’bdf’)

#計(jì)算最大值

>>>print(max(a_tuple)) # c

>>>print(max(b_tuple)) # bdf

#計(jì)算最小值

>>>print(min(a_tuple)) # a

>>>print(min(a_tuple)) #abc

備注:26個(gè)小寫ASCII碼值為97-122呜呐, 單個(gè)元素中有多個(gè)字母或數(shù)值時(shí)就斤,先比較第一個(gè),若相同再比較第二個(gè))

6.序列封包(Sequence Packing): 程序把多個(gè)值賦值給變量時(shí)蘑辑,Python會(huì)自動(dòng)將多個(gè)值封裝成元組洋机。這種功能被稱為序列封包。例如:

#將1洋魂、2绷旗、3封裝成元組后賦值給變量Var

>>>Var =1,2,3

>>>print(Var) #(1,2,3)

>>>print(type(var))#

7. 序列解包 (Sequence Unpacking):程序允許將序列(元組或列表等)直接賦值給多個(gè)變量喜鼓,序列的每個(gè)元素會(huì)被依次賦值給多個(gè)變量。這種功能被稱為序列解包衔肢。

#將tuple1中的元素1庄岖、2、3角骤、4隅忿、5依次賦值給變量 a、b邦尊、c背桐、d、e

>>>tuple1=(1,2,3,4,5)

>>>a,b,c,d,e=tuple1

>>>print(a,b,c,d,e) #1 2 3 4 5

三蝉揍、 列表的常用方法

1. list()函數(shù):可以將元組链峭、區(qū)間(range)等對象轉(zhuǎn)換成列表。例如:

#將元組轉(zhuǎn)換成列表

>>>a_tuple =(‘a(chǎn)’,’b’,’c’)

>>>a_list =list(a_tuple)

>>>print(a_list) #['a', 'b', 'c']

#將區(qū)間轉(zhuǎn)換成列表

>>>a_range =range(1,5)

>>>b_list =list(a_range)

>>>print(b_list)#[1,2,3,4]

2. tuple()函數(shù):可以將元組又沾、區(qū)間(range)等對象轉(zhuǎn)換成元組熏版。例如:

#將列表轉(zhuǎn)換成元組

>>>a_list =[‘a(chǎn)’,’b’,’c’]

>>>a_tuple =tuple(a_list)

>>>print(a_tuple) #('a', 'b', 'c')

3. 增加列表元素:可調(diào)用列表的append()方法,它會(huì)把傳入的參數(shù)追加到列表的最后面捍掺。append()方法還可以向列表中追加元組或列表撼短,但該方法只是將追加的元組或列表當(dāng)成單個(gè)元素。

1) 向列表中追加元素挺勿,例如:

>>>a_list =[‘a(chǎn)’,’b’,’c’]

>>>a_list.append(‘d’)

>>>print(a_list) ##['a', 'b', 'c', ’d’]

2) 向列表中追加元組曲横,例如:

>>>a_tuple =(1,2,3)

>>>a_list =[‘a(chǎn)’,’b’,’c’]

>>>a_list.append(a_tuple)

>>>print(a_list) ##['a', 'b', 'c', (1,2,3)]

3) 向列表中追加列表,例如:

>>>a_list =[‘a(chǎn)’,’b’,’c’]

>>>b_lsit =[‘d’,’f’]

>>>a_list.append(b_list)

>>>print(a_list) ##['a', 'b', 'c',[ ’d’,’f’]]

4) extend()方法:如果不想要追加的列表當(dāng)成一個(gè)整體元素不瓶,則可以使用extend()方法禾嫉。例如: >>>a_list =[‘a(chǎn)’,’b’,’c’] >>>b_lsit =[‘d’,’f’] >>>a_list.extend(b_list) >>>print(a_list) #['a', 'b', 'c',’ d’, ‘f’]

4. 刪除列表元素:Python 中的del語句專門用來執(zhí)行刪除操作,它既可以刪除列表中的一個(gè)元素蚊丐,又可以刪除一段子序列熙参,還可以刪除變量。例如:

>>>a_list =[‘a(chǎn)’,’b’,’c’]

>>>b_list =[‘a(chǎn)’,’b’,’c’,’d’,’e’,’f’]

>>>del a_list[2]

>>>del b_list[1:3]

>>>print(a_list) #['a', 'b']

>>>print(b_list) #['a', 'd', 'e', 'f']

5. 修改列表元素:程序?qū)α斜碓刭x值麦备,即修改了列表元素孽椰。例如:

>>>b_list =[‘a(chǎn)’,’b’,’c’,’d’,’e’,’f’]

>>>b_list[2]=’x’

>>>print(b_list) #['a', 'b', 'x', 'd', 'e', 'f']

6. 列表的其它常用方法:除了增加、刪除凛篙、修改以外黍匾,列表中還包含一些其它的常作方法。

1) 輸入dir(list), 可以查看列表中包含的所有方法呛梆。例如:

>>>dir(list) #列出list的所有方法

2) 其它方法的功能介紹: ?

count():用來統(tǒng)計(jì)列表中某個(gè)元素出現(xiàn)的次數(shù)锐涯。 ?

index():用來判斷某個(gè)元素在列表中出現(xiàn)的位置。 ?

pop():用來將列表當(dāng)作棧(stack)來使用填物,實(shí)現(xiàn)元素出棧功能纹腌。 ?

reverse():用于將列表中元素反響存放霎终。 ?

sort():用于對列表元素排序。

例如(count):

#計(jì)算列表中12出現(xiàn)的次數(shù)

>>>a_list =[1,12,4,5,6,12,5,12]

>>>print(a_list.count(12)) #3

例如(sort):

#對列表中的元素排序

>>>a_list =[1,12,4,5,6,12,5,12]

>>>a_list.sort()

>>>print(a_list) # [1, 4, 5, 5, 6, 12, 12, 12]

四升薯、 本節(jié)回顧總結(jié)

1) Python中列表和元組有哪些區(qū)別莱褒?

2) 如何通過索引獲取子序列?

3) 列表和元組支持哪些運(yùn)算覆劈?

4) 獲取列表和元組的長度、最大值和最小值沛励?

5) 列表中元素的增加责语、刪除和修改?

6) 關(guān)于列表的其它常用方法目派?

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末坤候,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子企蹭,更是在濱河造成了極大的恐慌白筹,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,451評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件谅摄,死亡現(xiàn)場離奇詭異徒河,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)送漠,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,172評論 3 394
  • 文/潘曉璐 我一進(jìn)店門顽照,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人闽寡,你說我怎么就攤上這事代兵。” “怎么了爷狈?”我有些...
    開封第一講書人閱讀 164,782評論 0 354
  • 文/不壞的土叔 我叫張陵植影,是天一觀的道長。 經(jīng)常有香客問我涎永,道長思币,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,709評論 1 294
  • 正文 為了忘掉前任羡微,我火速辦了婚禮支救,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘拷淘。我一直安慰自己各墨,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,733評論 6 392
  • 文/花漫 我一把揭開白布启涯。 她就那樣靜靜地躺著贬堵,像睡著了一般恃轩。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上黎做,一...
    開封第一講書人閱讀 51,578評論 1 305
  • 那天叉跛,我揣著相機(jī)與錄音,去河邊找鬼蒸殿。 笑死筷厘,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的宏所。 我是一名探鬼主播酥艳,決...
    沈念sama閱讀 40,320評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼爬骤!你這毒婦竟也來了充石?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,241評論 0 276
  • 序言:老撾萬榮一對情侶失蹤霞玄,失蹤者是張志新(化名)和其女友劉穎骤铃,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體坷剧,經(jīng)...
    沈念sama閱讀 45,686評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡惰爬,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,878評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了惫企。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片补鼻。...
    茶點(diǎn)故事閱讀 39,992評論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖雅任,靈堂內(nèi)的尸體忽然破棺而出风范,到底是詐尸還是另有隱情,我是刑警寧澤沪么,帶...
    沈念sama閱讀 35,715評論 5 346
  • 正文 年R本政府宣布硼婿,位于F島的核電站,受9級特大地震影響禽车,放射性物質(zhì)發(fā)生泄漏寇漫。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,336評論 3 330
  • 文/蒙蒙 一殉摔、第九天 我趴在偏房一處隱蔽的房頂上張望州胳。 院中可真熱鬧,春花似錦逸月、人聲如沸栓撞。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,912評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽瓤湘。三九已至瓢颅,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間弛说,已是汗流浹背挽懦。 一陣腳步聲響...
    開封第一講書人閱讀 33,040評論 1 270
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留木人,地道東北人信柿。 一個(gè)月前我還...
    沈念sama閱讀 48,173評論 3 370
  • 正文 我出身青樓,卻偏偏與公主長得像醒第,于是被迫代替她去往敵國和親渔嚷。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,947評論 2 355