倒数切片
Topic source可以通过定义来理解。假想一个不存在的下标-0
,用正数表示时指0
之前的元素,用负数表示时指-1
后的一个元素,但他们实际是不存在的。
list[:3] == list[-0:3]
:虽然切片list[-0:3]
包含-0
元素,但其实他不存在,所以与list[0:3]
相等。
list[-2:] == list[-2:-0]
:切片list[-2:-0]
不包含-0
元素,他实际也不存在,所以不包含
在此处没起作用,list[-2:-1]
中的-1
是存在的,所以不包含
起作用了,故此两者不相等。
希望有帮助。
list = [1,2,3,4,5]
list[:3] #输出[1,2,3]
list[0:3] #输出[1,2,3]
list[-2:] #输出[4.5]
list[-2:-1] #输出[4]
首先楼主list[:3]和list[0:3]输出的值就写错了 我理解的list[0:3] = list[:3],是输出list[0],list[1],list[2]; list[0:3]中的3不是楼主理解的终值,按照你的理解此时终值是3-1=2,也就是list[2]。 然后同理list[[-2:-1]为什么不能相当于list[[-2:],因为list[[-2:-1]按照楼主的理解,终值其实是list[-2],而list[-2:] =list[-2:0] 终值是list[-1]
list[-2:-1] #输出[4] list[-3:-1] #输出[4,5]
因为 [0:3] 输出的是[0],[1],[2] 不包含[3]
所以list[-2:-1] 输出的是[-2] 而不包含[-1]
你理解错了切片的意思。
其实只要按照迭代器的思想去考虑就行了 其实切片的参数模式是L[itera_first : itera_end ] 第一个数字是迭代开始的地址,而第二个数字是迭代结束的位置。 负号可以理解为是反向迭代就行了。
根据定义即可:
L[-2:] #可以按照L[-2:0]的意思来理解,取下标-2和-1,即到0为 止,但实际0是不存在的,所以实际L[-2:0]=[]
L[-2:-1] #同理取下标为-2,即到-1为止
- 1
周文笑
[0:3] 相当于 [:3],0是起始值 [-2:-1]为什么不能相当于[-2:],-1是终值
这个是为什么?思路想起来不很顺