美文网首页
slice函数

slice函数

作者: 小赤焰 | 来源:发表于2018-04-02 14:26 被阅读0次

    python的切片函数挺特别的。在此记录一下。

    函数原型:

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

    函数可以用在 list tuple string 上。

    用法

    构造一个list

    >>>l = range(100)
    

    步长为正

    简写下 正向取值,start是0可以省略,end是末尾可以省略,步长默认是1

    取全部的的数,

    >>>l[slice(0, len(l))]
    >>>l[:]
    

    从0到50每两个数取一个数,0可以省略

    >>>l[slice(0, 50, 2)]
    >>>l[0:50:2]
    >>>l[:50:2]
    [0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36, 38, 40, 42, 44, 46, 48]
    

    从30到list末尾

    >>>l[slice(30, len(l))]
    >>>l(30:)
    [30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99]
    

    slice函数不会造成下标越界

    >>>l[slice(30, len(l)+30)]
    >>>l(30:len(l)+30)
    [30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99]
    

    倒数取值

    >>>l[slice(-5, -1)]
    >>>l[-5:-1]
    [95, 96, 97, 98]
    >>>l[slice(-len(l), -1)]
    >>>l[:-1]
    #全部的数
    

    步长为负数的情况

    步长为负数其实是将取得的list反转。

    简写下 正向取值,start是头部可以省略,end是0可以省略
    反向取值,start是0可以省略,end是尾部可以省略

    正向取值加负数步长

    >>>l[slice(40, 20, -1)]
    >>>l[40:20:-1]
    [40, 39, 38, 37, 36, 35, 34, 33, 32, 31, 30, 29, 28, 27, 26, 25, 24, 23, 22, 21]
    

    反向取值加负数步长

    >>>l[slice(-20, -40, -1)]
    >>>l[-20:-40:-1]
    [80, 79, 78, 77, 76, 75, 74, 73, 72, 71, 70, 69, 68, 67, 66, 65, 64, 63, 62, 61]
    

    总结

    通常情况下,都会用简写来表达。不习惯的时候尽量不要省略参数,别给自己找trouble。
    步长为正,start < end,结果正向排列。
    步长为负,start > end,结果反向排列。

    相关文章

      网友评论

          本文标题:slice函数

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