目录
基本概念
切片操作符中的数字
切片操作符中的负数
元组的切片操作
字符串的切片操作
基本概念
切片操作符是列表名称后跟一个方括号,方括号中有一对可选的数字,并用冒号分割。注意这与你使用的索引操作符十分相似。记住数字是可选的,而冒号是必须的。
注意:也可以用相同的方法访问元组和字符串。
我们先创建一个0-99的数列:
L = list(range(100))
L为:[0, 1, 2, 3, ..., 99]
可以通过切片轻松取出某一段数列。
前10个数: L[:10]
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
前11-20个数: L[10:20]
[10, 11, 12, 13, 14, 15, 16, 17, 18, 19]
后10个数: L[-10:]
[90, 91, 92, 93, 94, 95, 96, 97, 98, 99]
切片操作符中的数字
第一个数(冒号之前)表示切片开始的位置,
第二个数(冒号之后)表示切片结束的位置,
第三个数(冒号之后)表示切片间隔数。
如果不指定第一个数,Python就从序列首开始。
如果没有指定第二个数,则Python会停止在序列尾。
注意,返回的序列从开始位置开始 ,刚好在结束位置之前结束。
即开始位置是包含在序列切片中的,而结束位置被排斥在切片外。
【左开有闭】
例如:
列表:shoplist=[0,1,2,3,4,5,6,7,8],shoplist[1:3]返回:
从位置1开始,包括位置2,但是停止在位置3的一个序列切片,因此返回一个含有两个项目的切片。shoplist[:]返回:整个序列的拷贝。
shoplist[::3]返回:位置3,位置6,位置9…的序列切片。
切片操作符中的负数
负数用在从序列尾开始计算的位置。
shoplist[:-1]返回:除了最后一个项目外包含所有项目的序列切片,
shoplist[::-1]返回:倒序序列切片。
元组的切片操作
tuple也是一种list,唯一区别是tuple不可变。
因此,tuple也可以用切片操作,只是操作的结果仍是tuple:
(0, 1, 2, 3, 4, 5)[:3]
结果为:(0, 1, 2)
字符串的切片操作
字符串'xxx'也可以看成是一种list,每个元素就是一个字符。
因此,字符串也可以用切片操作,只是操作结果仍是字符串:
'ABCDEFG'[:3]
结果为:'ABC'
'ABCDEFG'[::2]
结果为:'ACEG'
在很多编程语言中:
针对字符串提供了很多各种截取函数(例如,substring),其实目的就是对字符串切片。
Python没有针对字符串的截取函数,只需要切片一个操作就可以完成,非常简单。