切片是对列表、元组、字符串
等序列进行操作的一种方法,主要是使用下标/索引
来操作
下标如果有起始和结束位置,则不包括结束位置的索引,类似数学区间中的前闭后开的[ )
, 可以以下形式表示。
序列[起始位置:结束位置:步长]
seq[start:end: step]
从左向右
切片时,左边的数字要小于
右边的数字, 大于
的时候返回一个空的对象,索引可以是负数
In [74]: lst3
Out[74]: ['a', 3, 2, 1, 'hello list', 'a', 10, 'head']
In [75]: lst[2:5]
Out[75]: [2, 1, 'hello list']
超出索引范围时不会像单个取值时那样报错,取到最后为止
In [76]: lst[-12:-5]
Out[76]: ['a', 3, 2]
In [77]: s = 'python'
In [78]: s[4:1]
Out[78]: ''
如果 start 为0的时候可以省略,end为序列长度的时候可以省略,都省略相当于copy的效果
In [79]: lst3[:]
Out[79]: ['a', 3, 2, 1, 'hello list', 'a', 10, 'head']
In [80]: s[:4]
Out[80]: 'pyth'
In [81]: s[2:]
Out[81]: 'thon'
步长表示以间隔多少个元素取值,步长可以是负数,表示从后向前
从0到8,每隔两个元素取一个
In [82]: lst3[:8:2]
Out[82]: ['a', 2, 'hello list', 10]
从后向前时起始值要大于结束值
In [86]: lst3[10:2:-1]
Out[86]: ['head', 10, 'a', 'hello list', 1]