美文网首页
python3 基础 | 切片——神奇的用法

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

作者: 0与1的邂逅 | 来源:发表于2019-06-14 16:11 被阅读0次

    写在前面:

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

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

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

    索引

    进入正题:

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

    假设有一个列表:

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

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

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

    • start:起始位置
    • stop:终止位置(不包括)
    • step:步长(默认为1)

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

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

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


    不指定step:

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

    1. alist[start:stop]
    2. alist[start:]
    3. alist[:stop]
    4. alist[:]
    • 第一种方式:指定了start与stop参数,从start指定的下标开始取alist的元素,直到stop-1。

    • 第二种方式:会从start指定的下标开始,取alist剩余元素。

    • 第三种方式:会从alist的开始,取list元素,直到下标为stop-1。

    • 第四种方式:没有指定start与stop参数,则会返回整个列表

    不指定step
    start与stop参数为负值:

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

    1. alist[-3]
    2. alist[-2:]
    3. alist[:-1]
    4. alist[-4:-2]
    • 第一种方式:返回倒数第三个的值。

    • 第二种方式:指定参数start。

    • 第三种方式:指定参数stop。注意这里取不到stop,只能取到stop-1

    • 第四种方式:同时指定start和stop这两个参数。注意start的值需要小于stop的值。

    参数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]
    • 第一种方式:未指定参数start和stop。

    • 第二种方式:指定参数start。

    • 第三种方式:指定参数stop。

    • 第四种方式:同时指定start和stop。因为step是负数,所以是逆序遍历列表,所以参数start需要比参数stop大。

    参数step为负数

    写在最后:

    参考资料:


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

    • 可以简化代码
    • 方便图像处理,例如将图像所有像素的红色通道值都置为0,可以不用拆分出通道再赋值,(根据Numpy索引)直接使用切片。
    import cv2
    import numpy as np
    img=cv2.imread('/home/duan/workspace/opencv/images/roi.jpg')# 打开某个图像
    img[:,:,2]=0
    

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

    切片的形象理解

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

    相关文章

      网友评论

          本文标题:python3 基础 | 切片——神奇的用法

          本文链接:https://www.haomeiwen.com/subject/voldfctx.html