切片:指对操作的对象截取其中一部分的操作,以下是支持切片的数据类型
-
字符串(
str
):字符串是最常见的可以使用切片操作的数据类型。字符串是不可变的序列,你可以使用切片来获取子字符串。 -
列表(
list
):列表是可变的序列,你可以使用切片来获取子列表。切片操作将返回一个新的列表。 -
元组(
tuple
):元组是不可变的序列,类似于列表。你也可以使用切片来获取子元组,返回一个新的元组。 -
字节数组(
bytearray
):字节数组是可变的序列,类似于字符串。你可以使用切片来获取子字节数组。 -
range对象(
range
):range对象代表一个不可变的整数序列。你可以使用切片来获取子range对象,返回一个新的range对象。
语法:序列[开始位置下标 : 结束位置下标 : 步长] 。
范围:[开始下标,结束下标);步长为选取间隔,正负均可,默认为1。
举例如下:
str = '0123456789'
print(str[2:8:1])
print(str[2:8:2])
print(str[2:8])
print(str[:8])
print(str[2:])
print(str[:])
print('-' * 30)
print(str[::-1])
print(str[-4:-1:]) #-1表示最后一个数据下标
print(str[-1:-4:-1]) #开始小标处-1表示最后一个数据下标
输出:
234567
246
234567
01234567
23456789
0123456789------------------------------
9876543210
678
987
结论:
从分隔符上方的代码中可以看出切片包含开始小标位置数据 ,不包含结束下标位置数据 ;步长默认为1,开始下标默认为0,结束下标默认为结尾下标+1。
从倒数第三行打印可以看出步长为-1时,切片数据会翻转;从倒数第二行打印可以看出当开始下标和结束下标为负数时,6代表开始下标-4,9代表下标-1,下标从右到左依次递减。
注意:
当使用print(str[-1:-4:])时不会有任何数据输出,只会输出一个空行,这是因为-1 -> -4 (9->6)为逆序,但是数据查找是正序。因此不能查找到数据。但是给步长写为-1,print(str[-1:-4:-1])就能输出987。