我在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]
[]
答案 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。