Discuss / Python / 倒数切片

倒数切片

Topic source

周文笑

#1 Created at ... [Delete] [Delete and Lock User]
list = [1,2,3,4,5]
list[:3]            #输出[1,2]
list[0:3]           #输出[1,2]
list[-2:]           #输出[4.5]
list[-2:-1]         #输出[4]

[0:3] 相当于 [:3],0是起始值 [-2:-1]为什么不能相当于[-2:],-1是终值

这个是为什么?思路想起来不很顺

廖雪峰

#2 Created at ... [Delete] [Delete and Lock User]

规则都是人定的,如果有的地方你觉得不符合直觉,那就注意点就对了

slpi1

#3 Created at ... [Delete] [Delete and Lock User]

可以通过定义来理解。假想一个不存在的下标-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是存在的,所以不包含起作用了,故此两者不相等。

希望有帮助。

Geek_MrHowe

#4 Created at ... [Delete] [Delete and Lock User]
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]

哎生活2014

#5 Created at ... [Delete] [Delete and Lock User]

这样说不知道对不对。如果[2,3] 就是从数组从2起。2<=x<3.

与非----

#6 Created at ... [Delete] [Delete and Lock User]

list[-2:-1] #输出[4] list[-3:-1] #输出[4,5]

因为 [0:3] 输出的是[0],[1],[2] 不包含[3]
所以list[-2:-1] 输出的是[-2] 而不包含[-1] 你理解错了切片的意思。

与非----

#7 Created at ... [Delete] [Delete and Lock User]

忘了说了
list[-2:] 实际上等于[-2:0] 所以输出[4,5]

商郡马

#8 Created at ... [Delete] [Delete and Lock User]

本质上就是一个半开半闭区间。

其实只要按照迭代器的思想去考虑就行了 其实切片的参数模式是L[itera_first : itera_end ] 第一个数字是迭代开始的地址,而第二个数字是迭代结束的位置。 负号可以理解为是反向迭代就行了。

Enola燕玲

#10 Created at ... [Delete] [Delete and Lock User]

根据定义即可:

L[-2:] #可以按照L[-2:0]的意思来理解,取下标-2和-1,即到0为 止,但实际0是不存在的,所以实际L[-2:0]=[]

L[-2:-1] #同理取下标为-2,即到-1为止


  • 1

Reply