这篇博客主要讲切片的作用,首先来看一下什么是切片。
如果我们把python里面的list比作一大块猪肉,那么list里面每一个元素,都是这块猪肉上面的一片,然后我们从左往右给这些猪肉编号:0,1,2,3,…..那什么是切片呢,它就是一种按照给定区间取猪肉的方式。比方说有个客人过来说,老板给我来这坨猪肉里面16-20号的猪肉片,看着新鲜。如果老板从头开始一个一个数猪肉数到16再开始给客人幺秤,这不是没上过小学么,要是有一大堆客人,那这家生意不要做了,太慢了。所以python就提供了切片这样一种简单的方式来方便我们取数。
切片的适用对象
list,tuple(这个不知可行?最好亲测一下)
切片的格式
[start_position : end_position : step]
解释一下这几个东西。start_position和end_position很好理解,就是要取猪肉的开始编号和结束编号,注意哦,这个地方是左闭右开。比如客人说我要5-10之间的,那么实际上给他的猪肉是从5号开始,到10号结束,但是10号是不给的,实际上给了5,6,7,8,9这几片。然后step是什么呢,比方说遇到一个很鸡婆的客人,他说我要5-12之间所有奇数的猪肉,啊这好烦啊,但是客人是上帝嘛。这个时候step就设为2,表示我隔一个取一个,设为3呢?隔两个取一个,依次类推。那要是客人说,我要5-12的猪肉,但是我要倒着的,因为我篮子是锥形的,12号最小要先放它进去才行。那这怎么办呢?我们把step设为-1,╮(╯▽╰)╭这样也可以啦~
有的时候我们会发现有些人的代码start_position ,end_position , step总有没填的,甚至都没填,那这是什么情况?其实就是默认的,如果没填,step默认是1,start_position就是从0开始,end_position就是到队尾。我们下面举例看看效果哈。
a = [1,2,3,4,5,6,7,8,9,10]
print(a) # [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
print(a[::]) # [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
print(a[::-1]) # [10, 9, 8, 7, 6, 5, 4, 3, 2, 1]
print(a[::-2]) # [10, 8, 6, 4, 2]
print(a[1:5:]) # [2, 3, 4, 5]
print(a[1:10:])# [2, 3, 4, 5, 6, 7, 8, 9, 10]
print(a[1::]) # [2, 3, 4, 5, 6, 7, 8, 9, 10]
print(a[1:-1:])# [2, 3, 4, 5, 6, 7, 8, 9]