問題1. 超過列表成員個數的索引訪問列表會出現IndexError錯誤,可是若是用切片去訪問就不會報錯,而是返回一個空列表。一樣元組也是。spa
>>> a=[1,2,3,4] >>> a[10] Traceback (most recent call last): File "<stdin>", line 1, in <module> IndexError: list index out of range >>> a[10:] [] >>> a[10:11] [] >>> a=(1,2,3) >>> a[1] 2 >>> a[10] Traceback (most recent call last): File "<stdin>", line 1, in <module> IndexError: tuple index out of range >>> a[10:] () >>> a[10:20] () >>>
切片操做說明:a[1:3:2] 表示獲取索引從1到2的元素(不包括索引爲3的元素),而且每兩個元素只保留一個。code
>>> a=[1,2,3,4,5,6,7,8,9] >>> a[0:10:3] [1, 4, 7] >>> a[1:3:2] [2] >>> a[::-1] #實現列表反轉 [9, 8, 7, 6, 5, 4, 3, 2, 1] >>>
經過切片獲取元素,能夠先想象經過給對象中每一個元素做標記,
標記1: 0, 1, 2, 3, 4, 5, 6, 7
a=[1, 2, 3, 4, 5, 6, 7, 8]
標記2: -8,-7, -6,-5, -4,-3,-2,-1對象
標記以後有3種獲取方法,原則只要在兩個標記位之間有元素存在就能夠獲取到,不然返回空列表。
第一種:經過標記1順序獲取:blog
>>> a=[1, 2, 3, 4, 5, 6, 7, 8] >>> a[:] [1, 2, 3, 4, 5, 6, 7, 8] >>> a[0:] [1, 2, 3, 4, 5, 6, 7, 8] >>> a[:8] [1, 2, 3, 4, 5, 6, 7, 8] >>> a[0:8] [1, 2, 3, 4, 5, 6, 7, 8] >>> a[2:4] [3, 4] >>>
第二種:經過標記2順序獲取索引
>>> a=[1, 2, 3, 4, 5, 6, 7, 8] >>> a[-8:] [1, 2, 3, 4, 5, 6, 7, 8] >>> a[-8:-1] [1, 2, 3, 4, 5, 6, 7] #注意a[-8:-1],其中-1索引位置元素是獲取不到的。 >>> a[:-1] [1, 2, 3, 4, 5, 6, 7] #注意a[-8:-1],其中-1索引位置元素是獲取不到的。 >>> a[-6:-2] [3, 4, 5, 6]
第三種:經過混合標記1和2順序獲取:ast
>>> a=[1, 2, 3, 4, 5, 6, 7, 8] >>> a[-8:0] [] >>> a[-8:1] [1] >>> a[0:-1] [1, 2, 3, 4, 5, 6, 7] >>> a[8:-1] [] >>> a[7:-1] [] >>> a[6:-1] [7]