前段时间在学习python的过程中,遇到了一个关于切片的写法,感觉很奇怪:
>>> a = [1, 2, 3, 4]
# 通过切片实现了列表的倒序,乍一看,确实有点懵
>>> a[::-1]
[4, 3, 2, 1]
后来,通过查阅python学习手册,具体的第29章运算符重载,了解到如下知识。python在调用切片时,实际上是调用了自带的slice函数。
>>> a[::-1]
[4, 3, 2, 1]
# 这种写法和a[::-1]是对等的
>>> a[slice(None, None, -1)]
[4, 3, 2, 1]
我们再来看slice函数:
调用help(slice)之后,有如下构造器
slice(start, stop[, step])
即第一个参数是开始,第二个参数是结束,第三个位置是步长。
如此,再看a[::-1]就很容易理解了,开始位置0,结束位置直到最后,步长为-1
>>> a[1:]
[2, 3, 4]
>>> a[slice(1, None, None)]
[2, 3, 4]
>>> a[:]
[1, 2, 3, 4]
>>> a[slice(None, None, None)]
[1, 2, 3, 4]
哈哈,通过以上讲解,你还对python中的列表切片感到奇怪吗?就是个语法糖。有兴趣的话欢迎关注公众号:python小工具。一起学习python和pandas