官术网_书友最值得收藏!

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)查閱。

主站蜘蛛池模板: 蛟河市| 吉安县| 佛教| 石林| 南充市| 阳山县| 乐清市| 石屏县| 平顶山市| 县级市| 南平市| 米易县| 青海省| 永昌县| 马尔康县| 象州县| 疏勒县| 班玛县| 英吉沙县| 翼城县| 临潭县| 定边县| 兴山县| 积石山| 句容市| 沾化县| 茶陵县| 荣昌县| 兴宁市| 英吉沙县| 南投县| 黔南| 尚志市| 奈曼旗| 富蕴县| 全州县| 敦煌市| 理塘县| 乌恰县| 石柱| 即墨市|