zoukankan      html  css  js  c++  java
  • Python3之切片及内置切片函数slice

         切片

        取一个list或tuple的部分元素是非常常见的操作。比如,一个list

    L=[0,1,2,3,4,5,6,7,8,9]
    

      取前3个元素,应该怎么做

           笨方法,一个个列出来

    >>> [L[0],L[1],L[2]]
    [0, 1, 2]
    

      假如需要列出N个但是N很大 

      循环方法

    >>> r=[]
    >>> n=3
    >>> for i in range(n):
    ...   r.append(L[i])
    ... 
    >>> r
    [0, 1, 2]
    

      对于经常去指定索引范围的操作,用循环十分繁琐,因此pythone提供了切片操作符能大大简化操作

    >>> L[0:3]
    [0, 1, 2]
    

      L[0:3]表示,从索引0开始,直到索引3,但是不包含索引3,及索引0,1,2 一共3个元素

      如果第一个索引为0可以省略

    >>> L[:3]
    [0, 1, 2]
    

      也可以从索引1开始,取出2个元素来

    >>> L[1:3]
    [1, 2]
    

      类似也可以倒数切片,-1代表倒数第1个索引

    >>> L[-2:]
    [8, 9]
    >>> L[-2:-1]
    [8]
    

      默认取的间隔是1也可以定义,隔几个去一个

      从索引0取到索引9没隔两个取一个

    >>> L[0:10:2]
    [0, 2, 4, 6, 8]
    

      什么都不写,只写[:]就可以原样复制一个list

    >>> L[:]
    [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
    

      tuple也是一个list,唯一区别是tuple不可变.tuple切片也是一个tuple

    >>> (0,1,2,3,4,5)[:3]
    (0, 1, 2)
    

      字符串'xxx'也是可以看成是一种list,也可以切片返回的是一个字符

    >>> 'abcde'[:3]
    'abc'
    

      

      切片函数slice

      语法

    class slice(stop)
    class slice(start, stop[, step])
    

      参数说明

    start--起始位置  默认为None
    stop--结束位置   自定义
    step--间距         默认为None间距为1
    

      

    >>> myslice=slice(3)
    >>> myslice
    slice(None, 3, None)
    >>> L[myslice]
    [0, 1, 2]
    >>> print(myslice.start)
    None
    >>> print(myslice.step)
    None
    >>> print(myslice.stop)
    3
    

      以上

    myslice=(3)
    等价于
    myslice=slice(0,3,1)
    

      自定义间隔step

    #切片范围为0-10 间距为2
    >>> myslice=slice(0,10,2)
    #查看参数
    >>> myslice
    slice(0, 10, 2)
    >>> L[myslice]
    [0, 2, 4, 6, 8]
    

      

  • 相关阅读:
    HDU 1050 Moving Tables(贪心)
    HDU 1009 FatMouse' Trade(贪心)
    HDU 1097 A hard puzzle(快速幂)
    HDU 1016 Prime Ring Problem(dfs)
    HDU 1010 Tempter of the Bone(dfs)
    HDU 1003 Max Sum (dp)
    mysql_01 安装
    110.平衡二叉树
    1254.统计封闭岛屿的数目
    897.递归顺序查找树
  • 原文地址:https://www.cnblogs.com/minseo/p/11113638.html
Copyright © 2011-2022 走看看