各位读者对于切片的疑惑的地方应该都是start、end、steps为负数或正负数混用时是什么意思。
start、end表示截取的范围
start、end的正负表示位置的计数方式(正数表示从位置0开始计数,负数表示从末尾开始计数,没有-0和+0之分,因此0只表示位置0)
位置:0 1 2 3 4 5
-6 -5 -4 -3 -2 -1
l=[2, 3 , 4 , 5 , 6 , 7]
steps:步长(每隔steps-1个数据进行截取,2则表示每隔1个数进行截取,1则表示每隔0个数进行截取)
steps的正负号表示截取的方向(正表示从start开始向前截取,负表示从start开始向后截取)
step为正向前截取 ============>
l=[2, 3, 4, ,5 ,6 ,7]
step为负向后截取<============
l[0:2]=[2,3](不包含位置2)
=====>
[2, 3, 4, ,5 ,6 ,7]
位置 0 1 2 3 4 5
l[2:0]=[](不指定时step默认为1,向前截取,而位置0却在位置2“后面”,与截取方向相反,因此为空)
=====>
[2, 3, 4, ,5 ,6 ,7]
位置 0 1 2 3 4 5
终 起
l[2:0:-1]=[4,3](-1表示向后截取,位置0在位置2“后面”,与截取方向是一致的,因此不为空)
<=====
[2, 3, 4, ,5 ,6 ,7]
位置 0 1 2 3 4 5
终 起
l[-4:-1]=[4,5,6]
============>
[2, 3, 4, ,5 ,6 ,7]
位置-6 -5 -4 -3 -2 -1
l[-1:-4]=[](向前截取,位置-1在位置-4“后面”,方向相反,因此为空)
===========>
[2, 3, 4, ,5 ,6 ,7]
位置-6 -5 -4 -3 -2 -1
终 起
l[-1:-4:-1]=[7,6,5](向后截取,位置-4在位置-1后面,方向一致)
<===========
[2, 3, 4, ,5 ,6 ,7]
位置-6 -5 -4 -3 -2 -1
终 起