切片,顾名思义,将一段连续的数据按照指定的规则切割为多个部分,从中得到我们需要的那部分。
在平时的编程时常会遇到这样的需求,取列表的前n个元素、或者最后一个元素…一般来说,前者我们可以通过循环获取,后者也可以通过下标取得。但其实我们有更好的解决方案——切片。
1、实例引入,取列表L的前4位元素
- 循环实现
L = [1,2,3,4,5,6,7]
L1 = []
for i in range(4):
L1.append(L[i])
print(L1)
- 切片实现
L = [1,2,3,4,5,6,7]
L1 = L[:4] #切片,取前4位
print(L1)
结果:[1, 2, 3, 4]
可见,我们使用 L[:4]
进行了切片,而使用切片后,代码一下子精简了许多。那切片具体如何使用呢?往下看
2、切片的使用方法
上面实例中的L[:4]
其实是简写后的写法,原始应为L[0:4:1]
。
所以切片的使用格式可抽象为 [start : end : stepNum]
,参数含义如下表所示。
参数 | 代表含义 |
---|---|
start | 切片的起始下标,即从哪一个位置开始切割,当start>=0时,表示从左往右取,反之表示从右往左取 。注:当start=0时,可以省略。 |
end | 切片的结束下标,即切割到哪个位置结束,最大为列表长度 ,即 len(llist)注: 当end=len(list)时,可以省略。 |
stepNum | 取数间距,即隔多少位取一个数。大于0时表示正向隔取,小于0时表示反向隔取 。注: 不能等于0! |
下面是一些使用实例:
- 取列表的后三位元素
L = [1,2,3,4,5,6,7]
L1 = L[-3:]
结果:[5,6,7]
倒数第一个数、第二个数、第三个…分别对应 -1、-2、-3 …
- 取第3到第6位之间元素
L = [1,2,3,4,5,6,7]
L1 = L[2:5]
结果:[3,4,5]
可见,第6位元素【6】并没有取到。因为切片默认取起始元素,不取结尾元素,即遵循左闭右开原则
。
- 从0开始,每隔2位数取一次元素
L = [1,2,3,4,5,6,7]
L1 = L[::2]
结果:[1, 3, 5, 7]
-
翻转列表
L = [1,2,3,4] L1 = L[::-1]
结果:[4, 3, 2, 1]
3、哪些数据对象可以进行切片?
列表-list 、元组-tuple 、字符串-string