- 機(jī)器學(xué)習(xí):基于OpenCV和Python的智能圖像處理
- 高敬鵬 江志燁 趙娜
- 1398字
- 2020-06-04 18:30:30
2.5 列表與元組
在Python中,每個(gè)元素按照位置編號(hào)來(lái)順序存取的數(shù)據(jù)類型稱為序列類型,這就類似于C語(yǔ)言中的數(shù)組。不同的是,在Python中,列表和元組這兩種序列可以存儲(chǔ)不同類型的元素。
對(duì)于列表和元組來(lái)說(shuō),它們的大部分操作是相同的,不同的是列表的值是可以改變的,而元組的值是不可變的。在Python中,這兩種序列在處理數(shù)據(jù)時(shí)各有優(yōu)缺點(diǎn)。元組適用于不希望數(shù)據(jù)被修改的情況,而列表則適用于希望數(shù)據(jù)被修改的情況。
2.5.1 創(chuàng)建
本小節(jié)主要介紹列表與元組的創(chuàng)建。
1.列表的創(chuàng)建
列表的創(chuàng)建采用在方括號(hào)中用逗號(hào)分隔的定義方式,基本形式如下:
[x1, [x2, ..., xn]]
列表也可以通過(guò)list對(duì)象來(lái)創(chuàng)建,基本形式如下:
list() #創(chuàng)建一個(gè)空列表 list(iterable) #創(chuàng)建一個(gè)空列表,iterable為枚舉對(duì)象的元素
列表創(chuàng)建示例如下:
>>>[]#創(chuàng)建一個(gè)空列表 >>>[1, 2, 3] #創(chuàng)建一個(gè)元素為1,2,3的列表 >>>list() #使用list創(chuàng)建一個(gè)空列表 >>>list((1, 2, 3)) #使用list創(chuàng)建一個(gè)元素為1,2,3的列表 >>>list("a, b, c") #使用list創(chuàng)建一個(gè)元素為a, b, c的列表
2.元組的創(chuàng)建
元組的創(chuàng)建采用圓括號(hào)中逗號(hào)分隔的定義方式,其中,圓括號(hào)可以省略。基本形式如下:
(x1, [x2, ..., xn])
或者為:
x1, [x2, ..., xn]
注意 當(dāng)元組中只有一個(gè)項(xiàng)目時(shí),其后面的逗號(hào)不可以省略,否則,Python解釋器會(huì)把(x1)當(dāng)作x1。
元組也可以通過(guò)tuple對(duì)象來(lái)創(chuàng)建,基本形式如下:
tuple() #創(chuàng)建一個(gè)空元組 tuple (iterable) #創(chuàng)建一個(gè)空元組,iterable為枚舉對(duì)象的元素
元組創(chuàng)建示例如下:
>>> [ ] #創(chuàng)建一個(gè)空元組 >>>[1, 2, 3] #創(chuàng)建一個(gè)元素為1,2,3的元組 >>>tuple () #使用tuple創(chuàng)建一個(gè)空元組 >>>tuple ((1, 2, 3)) #使用tuple創(chuàng)建一個(gè)元素為1,2,3的元組 >>>tuple ("a, b, c") #使用tuple創(chuàng)建一個(gè)元素為a, b, c的元組
2.5.2 查詢
列表和元組都支持查詢(訪問(wèn))其中的元素。在Python中,序列的每一個(gè)元素被分配一個(gè)位置編號(hào),稱為索引(index)。第一個(gè)元素的索引是0,序列中的元素都可以通過(guò)索引進(jìn)行訪問(wèn)。其一般格式為:
序列名[索引]
列表與元組的正向索引查詢?nèi)缦滤荆?/p>
>>>list_l = [1,2,3] >>>list_l[1] 2 >>>tuple_l = ((1,2,3)) >>>tuple[0] 1
另外,Python序列還支持反向索引(負(fù)數(shù)索引)。這種索引方式可以從最后一個(gè)元素開(kāi)始計(jì)數(shù),即倒數(shù)第一個(gè)元素的索引是-1。這種方法可以在不知道序列長(zhǎng)度的情況下訪問(wèn)序列最后面的元素。
列表與元組的反向索引查詢?nèi)缦滤荆?/p>
>>>list_l = [1,2,3] >>>list_l[-1] 3 >>>tuple_l = ((1,2,3)) >>>tuple[-2] 2
2.5.3 修改
對(duì)于修改操作,由于元組的不可變性,元組的數(shù)據(jù)不可以被改變,除非將其改為列表類型。
對(duì)于列表來(lái)說(shuō),要修改其中某一個(gè)值,可以采用索引的方式,這種操作也叫作賦值。例如:
>>>list_l = [1,2,3] >>>list_l[1] = 9 >>>list_l [1,9,3]
注意 在對(duì)列表進(jìn)行賦值操作時(shí),不能為一個(gè)沒(méi)有索引的元素賦值。
下面介紹兩個(gè)Python自帶的函數(shù)append和extend。append函數(shù)的作用是在列表末尾添加一個(gè)元素,例如:
>>>list_l = [1,2,3] >>>list_l.append(4) >>>list_l [1,2,3,4]
在Python中,extend函數(shù)用于將一個(gè)列表添加到另一個(gè)列表的尾部,例如:
>>>list_1 = [1,2,3] >>>list_l.extend('a, b, c') >>>list_l [1,2,3, a, b, c]
由于元組的不可變性,我們不能改變?cè)M的元素,但是可以將元組轉(zhuǎn)換為列表進(jìn)行修改,例如:
>>>tuple_l = [1,2,3] >>>list_l = list(tuple) #元組轉(zhuǎn)列表 >>>list_l[1] = 8 >>>tuple_1 = tuple(list_1) #列表轉(zhuǎn)元組 >>>tuple_1 (1,8,3)
列表作為一種可變對(duì)象,Python中提供了很多方法對(duì)其進(jìn)行操作,如表2-2所示。
表2-2 列表對(duì)象的主要操作方法
class="thirdTitle" id="bw25">2.5.4 刪除
元素的刪除操作也只適用于列表,而不適用于元組,同樣,將元組轉(zhuǎn)換為列表就可以進(jìn)行刪除操作。
從列表中刪除元素很容易,可以使用del、clear、remove等操作,如下所示。
>>>x = [1,2,3, 'a'] >>>del x[3] >>>x [1,2,3]
del不僅可以刪除某個(gè)元素,還可以刪除對(duì)象,如下所示。
>>>x = [1,2,3, 'a']
>>>del x
>>>x #錯(cuò)誤語(yǔ)句
上面的程序中因?yàn)閤對(duì)象被刪除,所以會(huì)提示:
NameError:name 'x' is not defined
clear會(huì)刪除列表中所有的元素。
>>>x = [1,2,3, 'a'] >>>x.clear() >>>x []
remove (x)操作會(huì)將列表中出現(xiàn)的第一個(gè)x刪除。
>>>x = [1,2,3, 'a'] >>>x.remove(2) >>>x [1,3, 'a']
列表的基本操作還有很多,在此不再一一列舉,感興趣的讀者可以上網(wǎng)查閱。
- DeepSeek實(shí)操指南:引爆AI時(shí)代個(gè)人效率核聚變
- 現(xiàn)代推薦算法
- 機(jī)器視覺(jué)自動(dòng)檢測(cè)技術(shù)
- 深度思考:人工智能的終點(diǎn)與人類創(chuàng)造力的起點(diǎn)
- 模式識(shí)別與智能計(jì)算:Matlab技術(shù)實(shí)現(xiàn)(第2版)
- AI公文寫(xiě)作一本通:用ChatGPT和文心一言提高公文寫(xiě)作質(zhì)量和寫(xiě)作效率
- 從機(jī)器學(xué)習(xí)到深度學(xué)習(xí):基于scikit-learn與TensorFlow的高效開(kāi)發(fā)實(shí)戰(zhàn)
- AI虛擬仿真從入門(mén)到參賽
- 深度學(xué)習(xí)實(shí)戰(zhàn):基于TensorFlow 2和Keras(原書(shū)第2版)
- 圖解人工智能
- AI助理:用ChatGPT輕松搞定工作
- 秒懂AI寫(xiě)作:讓你輕松成為寫(xiě)作高手
- 人工智能簡(jiǎn)明知識(shí)讀本
- 智能優(yōu)化技術(shù):適應(yīng)度地形理論及組合優(yōu)化問(wèn)題的應(yīng)用
- 精通ROS機(jī)器人編程(原書(shū)第3版)