第一部分

​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]