slice函数

2018-04-02  本文已影响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,结果反向排列。

上一篇 下一篇

猜你喜欢

热点阅读