【发布时间】:2020-03-27 13:42:36
【问题描述】:
假设我们有这个列表:
>>> a = [x for x in range(10)]
>>> print(a)
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
另外,两种切片方式都按预期工作:
>>> a[3:8]
[3, 4, 5, 6, 7]
>>> a[::-1]
[9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
但是,当结合起来时:
>>> a[3:8:-1]
[]
我希望它是[7, 6, 5 ,4, 3] 或[6, 5, 4, 3, 2](如果先发生反转)。
考虑start 或stop 参数未传递时会发生什么也很有趣:
>>> a[:5:-1]
[9, 8, 7, 6]
这几乎是我所期望的,只差一件。用numpy 对此进行了测试,它的行为似乎相同。
这是怎么回事?
【问题讨论】:
-
你试过
a[8:3:-1]吗? -
如果您正确理解了前两个表达式
a[:: -1]和a[3:8]那么您的预期结果应该来自a[3: 8][:: -1]表达式,而不是a[3: 8: -1]