取一个list或者tuple的部分元素是一个非常常见的操作,比如一个list如下:
L =['Michael','Sarah','Tracy','Bob','Jack']
使用切片(slice)来取前3个元素就是:
>>>L(0:3)
['Michael','Sarah','Tracy']
L[0:3]表示,从索引0开始,直接索引到3为止,但是不包括3.即索引0,1,2。
如果索引0开始,还可以省略:
>>>L[:3]
['Michael','Sarah','Tracy']
也可以从1开始取,取出两个元素:
>>>L[1:3]
['Sarah','Tracy']
类似的,Python支持L[-1]取倒数第一个元素,那么它同样支持倒数切片。试试:
>>>L[-2:]
['Bob','Jack']
记住倒数第一个元素的索引是-1.
切片操作十分有用,我们先建一个0-99的数列:
>>>L =list(range(100))
>>>L
[1,2,3,...99]
可以通过切片非常轻松取出某一段序列。比如前10个:
>>>L[:10]
[0,1,2,3,4,5,...9]
前10个数每两个取一个:
>>>L[:10:2]
[0,2,4,...8]
所有的数每5个取一个。
>>>L[::5]
[0,5,10,15,...95]
甚至什么都不写
>>>L[:]
[1,2,3,..99]
tuple也是list一种,唯一的区别是tuple不可变。因此tuple也可以使用切片。只是操作结果仍是tuple。
>>>(0,1,2,3,4,5)[:3]
(0,1,2)
字符串'xxx'也可以看作一种list,每个元素就是一个字符。因此,字符串也可以使用切片技术。只是操作结果也是一个字符串:
>>>'ABCDEF'[:3]
'ABC'
在很多 编程语言中,针对字符串提供了各种截取函数,(例如substring),其实目的就是对字符串切片。Python中没有针对字符串的截取函数,只需要一个切片就可以了。非常简单。
小结:
有了切片的操作,很多循环就不需要了。Python的切片非常灵活,一行代码就可以实现很多循环才能实现的功能。