python3 基础 | 切片——神奇的用法

2019-06-14  本文已影响0人  0与1的邂逅

写在前面:

PS:本文所有代码均在python3.6、ipython的环境下运行。

在Python中,像字符串(str)列表(list)元组(tupple)numpy ndarray等都支持切片操作。

同时,字符串、列表、元组的索引可以从正数的0开始从左向右(正序),也可以从负数的-1开始从右向左(逆序)。我们可以用代码检验一下:

索引

进入正题:

下面,我们先以列表来进行说明,元组、字符串也是类似的操作。

假设有一个列表:

alist = [0,1,2,3,4]

切片语法的基本形式:
alist[start:stop:step]

可以看出切片的操作有三个参数,分别是:

这三个参数都是可选参数,表示索引index。

需要注意的是,切片的范围是[start,stop) (左闭右开)

step参数默认值是1。step不能为0,不然会报错ValueError。


不指定step:

当不指定step参数时,主要有下面几种形式:

1. alist[start:stop]
2. alist[start:]
3. alist[:stop]
4. alist[:]
不指定step
start与stop参数为负值:

start与stop的值可以是负值,表示取值是从list的最后开始,而不是开头。前面我们也说过了,列表的索引可以是从负数-1开始,从右到左。

1. alist[-3]
2. alist[-2:]
3. alist[:-1]
4. alist[-4:-2]
参数start、stop为负数

参数step与参数start、stop一样,也具有正数、负数两种方式。step不能为0,不然会报错ValueError。)step为正数的情况比较好理解,所以只看step为负数的情况。

参数step为负数:
1. alist[::-2]
2. alist[4::-2]
3. alist[:2:-2]
4. alist[4:1:-2]
参数step为负数

写在最后:

参考资料:


讲了这么多,切片有什么用呢?

import cv2
import numpy as np
img=cv2.imread('/home/duan/workspace/opencv/images/roi.jpg')# 打开某个图像
img[:,:,2]=0

最后,附上一张切片的形象图,希望帮助大家更好理解python中的切片操作。

切片的形象理解

如有错误或建议,欢迎指出。如有侵权,请联系作者删除!!!

上一篇 下一篇

猜你喜欢

热点阅读