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

1.5.3 列表

列表(list)的元素有序但不唯一,且擁有索引。列表非常適合于元素需要有序存儲且元素索引已知的場景。

列表和元組相似,唯一的區別是元組不可變,而列表中的元素可以移動,也可以增刪。如果你確定一個集合中的元素不會被修改,請使用元組而非列表,因為操作元組比操作相同的列表更快。如果集合中的元素不可變,Python會進行一些優化。

創建Python列表,可以使用list函數:

或者使用字面量語法:

請注意,這里使用的是方括號([])。

使用len函數可以得到列表中元素的數量:

列表元素可以通過索引訪問(第一個元素的索引為0):

我們還可以替換列表中的現有元素:

注意,不要使用列表中不存在的索引值,否則會彈出IndexError:

使用append方法可以將元素添加到列表的末尾:

通常,我們感興趣的不僅是元素,還包括其索引。在這種情況下,我們可以使用enumerate函數,它會生成一個包含索引和元素的元組:

可以通過從其他列表中獲取連續的元素來創建一個新的列表。這個過程被稱為切片(slicing)。

列表切片

對列表進行切片操作,與使用方括號對列表進行索引類似,只不過我們使用的是兩個用冒號分隔的索引:[<起始值>:<結束值>]。示例如下:

在上例中,我們有一個列表a:[1,2,3,4]。通過對該列表進行切片,選取從索引1(包含)到索引3(不包含)的元素,來創建一個新列表b。

注意:請記住,Python中的切片操作總是包含起始索引的元素,不包括結束索引的元素。

圖1-4描繪了這個過程。

圖1-4 對列表進行切片

切片操作符中的起始值和結束值都是可選的,因為它們有默認值。默認情況下,起始索引被賦值為列表中的第一個索引,也就是0。結束索引被賦值為列表中的最后一個索引加1,等于len(the_list)。

在這個例子中,列表b_1和b_2都是列表a的副本。之所以說是副本,是因為它們確實是不同的列表,你可以放心地修改b_1或b_2,而不會改變列表a。你可以通過執行以下操作來測試這一點:

另一個小技巧是使用負索引。負索引的計數方向是從列表末尾開始,并向列表開頭移動。負索引可以用于切片,操作方式和正索引相同,只有一個小的區別:負索引從-1而非-0開始。例如,我們可以對一個列表切片,得到它最后的兩個值,如下:

這里我們創建了一個新的列表,從列表的倒數第二個元素開始,一直到最后一個元素。圖1-5描繪了這一點。

列表切片在Python中用途廣泛。

主站蜘蛛池模板: 汝阳县| 永和县| 周宁县| 鄢陵县| 定州市| 北海市| 乳源| 菏泽市| 岗巴县| 天气| 塔河县| 古田县| 开封县| 新乡市| 新郑市| 五指山市| 孝义市| 宁城县| 依兰县| 广德县| 江津市| 鸡西市| 商都县| 通化市| 牡丹江市| 芮城县| 礼泉县| 灵川县| 诸暨市| 磴口县| 石泉县| 钟山县| 鲁山县| 应用必备| 门头沟区| 蓬安县| 红河县| 江山市| 思茅市| 密云县| 霍林郭勒市|