第一部分
a[i:j]
的含義是將【a[i]到a[j-1]的元素】複製一遍,以生成一個切片,切片的數據類型與【被切片的對象】相同。
示例代碼如下:
>>> list1 = [1, 2, 3, 4, 5]
>>> tuple1 = ('a', 'b', 'c', 'd', 'e')
>>> string1 = "abcde"
>>> print(list1[1:4])
[2, 3, 4]
>>> print(tuple1[1:4])
('b', 'c', 'd')
>>> print(string1[1:4])
bcd
第二部分
對於a[i:j]:當未指定i的值時,i默認爲0;當未指定j的值時,j默認爲len(a);當i與j均缺省時,即a[:]就相當於複製一份a。
示例代碼如下:
>>> list1 = [1, 2, 3, 4, 5]
>>> list1[:3] # 相當於list1[0:3]
[1, 2, 3]
>>> list1[3:] # 相當於list1[3:5]
[4, 5]
>>> list1[:] # 相當於list1[0:5],相當於a的副本
[1, 2, 3, 4, 5]
第三部分
a[i:j:s]
中,i與j和上面所講的用法一樣;而s表示步長,默認值爲1。a[i:j:1]相當於a[i:j]。
(這裏是我最難以理解的部分,所以重點加粗)當步長s<0:i缺省時默認爲-1,j缺省時默認爲-(len(a)+1)。a[::-1]相當於a[-1:-len(a)-1:-1],這樣是從最後一個元素反過來到第一個元素複製一次,說白了就是倒敘輸出元素。
示例代碼如下:
>>> list1 = [1, 2, 3, 4, 5]
>>> list1[::-1] # list1的元素倒序
[5, 4, 3, 2, 1]
>>> list1[::-2] # 隔一個元素輸出
[5, 3, 1]