切片
切片是指对序列截取其中一部分的操作。切片的语法格式如下:
[起始索引:结束索引:步长]
切片截取的范围属于左闭右开,即从起始索引开始,到结束索引前一位结束(不包含结束位本身)。我们把索引比作一把“刀”,在开始索引和结束索引的位置“切下”,“切下”的元素就是这个范围内的元素。步长的取值可以是正数和负数,默认值为1。
根据步长的取值,可以分为如下两种情况:
(1)步长大于0
按照从左到右的顺序,每隔“步长-1”(索引间的差值仍为步长值)个字符进行一次截取。这时,“起始”指向的位置应该在“结束”指向的位置的左边,否则返回值为空。
示例如下:
>>> string = 'python'
>>> string[0:6] # 没指定步长,默认为1
'python'
>>> string[2:5:2] # 指定步长为2
'to'
在上述示例中,如果没有指定步长默认为1。以string[2:5:2]为例,通过示意图来分析切片的原理,如图1所示。
图1 切片示意图(步长大于0)
(2)步长小于0
按照从右到左的顺序,每隔“步长-1”(索引间的差值仍为步长值)个字符进行一次截取。这时,“起始”指向的位置应该在“结束”指向的位置的右边,否则返回值为空。
示例如下:
>>> string = 'python'
>>> string[3:0:-1]
'hty'
>>> string[0:3:-2]
''
注意,起始位置的索引必须大于结束位置的索引,否则返回空字符串。以string[3:0:-1]为例,通过示意图来分析切片的原理,如图2所示。
图2 切片示意图(步长小于0)