在了解什么是切片之前,先考虑一个问题:给定一个字符串或者数组,在Python中如何取其中的一部分数据。比如说我们要取前五个数或者前五个字符。在C++或者Java中底层都封装了很好的库函数给我们直接调用,比如Java中有subString,那么在Python中,我们首先能想到最笨的方法就是把这前五个元素列举出来:
list=[1,2,3,4,5,6,7,8,9]
print(list[0], list[1], list[2], list[3], list[4])
然后我们稍微想一下,好像能改进,可以用循环,于是有如下代码:
list=[1,2,3,4,5,6,7,8,9]
for i in range(5):
print(list[i])
但是,这样还是太麻烦了,毕竟都用上了循环。其实,Python是提供了一种切片机制,当我们有这种需求时,能极大地简化我们的代码:
list=[1,2,3,4,5,6,7,8,9]
print(list[0:5])
中括号[]中第一个元素表示起始偏移量,第二个元素表示结束偏移量,但是这里需要注意一点,这个范围是左闭右开的,即[0:5]=0,1,2,3,4。如果第一个偏移量是0,代码也可以简化为list[:5]。同时也支持隔几个元素取一次,比如每两个元素取一次可以写成list[0:5:2]=[1,3,5]。
我们知道,Python支持list中取倒数第几个元素,那么类似的,也支持倒数取切片。
list=[1,2,3,4,5,6,7,8,9]
print(list[-3:-1]) #结果为[7,8]
同时,tuple也是一种特殊的list,也可以使用切片操作,切片返回的结果也是tuple,字符串同样也行,下面举两个简单的例子:
list = (1,2,3,4,5,6,7,8,9) str = '123456789' print(list[0:5]) #结果为(1,2,3,4,5) print(str[0:5]) #结果为12345