为什么扩展切片不能反转列表?

时间:2019-07-09 20:05:13

标签: python list

我在python中切片列表,无法解释某些结果。 以下两个对我来说似乎很自然:

"eventType":"Bounce",
"bounce":{
"bounceType":"Transient",
"bounceSubType":"General",
"bouncedRecipients":[
{
"emailAddress":"{some_email}",
"action":"failed",
"status":"5.7.8",
"diagnosticCode":"smtp; 535 5.7.8 Error: blocked by Block Address check from 54.240.8.90"
}
],
"timestamp":"2019-07-03T19:48:56.445Z",
"feedbackId":"0100016bb962013a-6cd68815-3c51-4216-9946-50f01b923057-000000",
"reportingMTA":"dsn; a8-90.smtp-out.amazonses.com"
}

但是

>>>[0,1,2,3,4,5][1:4:1]
[1, 2, 3]

>>>[0,1,2,3,4,5]
[::-1] == [5,4,3,2,1,0]

以为我希望它是[3,2,1]。为什么会产生[]?为什么不反转列表?首先在python内部,步骤或切片中发生什么?

我也发现

>>>[0,1,2,3,4,5][1:4:-1]
[]

2 个答案:

答案 0 :(得分:0)

切片中的第三个数字是步数。因此,在[0,1,2,3,4,5][1:4:-1]中,切片从1开始,然后向下1向下进行切片,直到小于4为止。尝试这样做:

>>> [0,1,2,3,4,5][4:1:-1]
[4, 3, 2]

答案 1 :(得分:0)

如果要切片,则切片看起来像这样[start:end:step]。为此:

>>> [0,1,2,3,4,5][1:4:1]
[1, 2, 3]

它从索引1到索引3凝视着,因为它一次淘汰了索引4一次。 在第二个列表中您将获得一个空列表,因为您是从第一个索引中移出-1。因此,这将是解决方案。

>>> [0,1,2,3,4,5][4:1:-1]
[4, 3, 2]

之所以起作用,是因为您正在将索引从4向前索引为-1,并将其向前移动-1。