一淑廊、列表和元組
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)于列表的其它常用方法目派?