Python Slicing Problem,当步为负数时,怎么回事?

时间:2018-10-02 17:32:09

标签: python python-3.x slice

a[:-3:-1] # the last two items, reversed
a[-3::-1] # everything except the last two items, reversed

我不知道这两个切片是如何进行的。对于您看到的第一个命令,没有给出第一个元素。因此,理想情况下应该从头开始,但不是。它反向打印最后两个元素。

对于第二个,如果您看到-3表示它是从结尾引用第三个元素,但切片是从头开始的。我完全被困住了,不知道为什么。

1 个答案:

答案 0 :(得分:0)

正步长值将从左到右遍历列表。负步进值从右到左遍历列表。

nums = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

nums[::1]     # '[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]'
nums[::-1]    # '[10, 9, 8, 7, 6, 5, 4, 3, 2, 1]'
nums[1::-1]   # '[2, 1]'
nums[:-3:-1]  # '[10, 9]'
nums[-3::-1]  # '[8, 7, 6, 5, 4, 3, 2, 1]'