对 python numpy 中的负步进感到困惑
Confused about negative stepping in python numpy
我正在努力理解切片的各个方面,但我仍在挣扎。
这是我目前的理解:
完整切片语法为:start:stop:step
。 start
指的是用作切片开始的元素的 index。 stop
指的是我们应该在 之前停止 以完成我们的切片的元素的索引。 step
允许您获取 start:stop 范围内的每个第 n 个元素。
好的,这一切都说得通,但是当我们反转列表时,我很困惑 stop
是如何工作的。
我使用 Pycharm 创建了这个简短示例:
nums = [10, 20, 30, 40, 50, 60, 70, 80, 90]
print (nums[-2:1:-1])
Pycharm 中的正确答案:[80, 70, 60, 50, 40, 30]
但是,我认为止损点是 10...因为 index[0] 是 10,index[1] 是 20,如果我使用上面的逻辑...那么“就在 index[ 1] 是 index[0],也就是 10。那么为什么它会停在 30 处呢……也就是 index[2]?
有人可能会因此逮捕我,但既然你往回走,index[1]前面的数字确实是index[2]。由于您执行了负步进,因此将整个列表看成是相反的。
有一件事可以提供帮助:假设您站在售票队伍的前面。你的老板说 "go and watch the queue, stop right before you get to the man with the hat"(戴帽子的人是 index[1])。你要停下来的地方是 index[2]。但是,如果您和您的老板站在队列的最后面并且他说 "go in the line and stop right before you get to the man with the black hat",您将停在索引 [0]。这完全取决于您从哪里开始的观点。
谢谢大家。你的解释很有道理。我希望这篇文章对正在学习 Python 切片的人有所帮助。
我正在努力理解切片的各个方面,但我仍在挣扎。
这是我目前的理解:
完整切片语法为:start:stop:step
。 start
指的是用作切片开始的元素的 index。 stop
指的是我们应该在 之前停止 以完成我们的切片的元素的索引。 step
允许您获取 start:stop 范围内的每个第 n 个元素。
好的,这一切都说得通,但是当我们反转列表时,我很困惑 stop
是如何工作的。
我使用 Pycharm 创建了这个简短示例:
nums = [10, 20, 30, 40, 50, 60, 70, 80, 90]
print (nums[-2:1:-1])
Pycharm 中的正确答案:[80, 70, 60, 50, 40, 30]
但是,我认为止损点是 10...因为 index[0] 是 10,index[1] 是 20,如果我使用上面的逻辑...那么“就在 index[ 1] 是 index[0],也就是 10。那么为什么它会停在 30 处呢……也就是 index[2]?
有人可能会因此逮捕我,但既然你往回走,index[1]前面的数字确实是index[2]。由于您执行了负步进,因此将整个列表看成是相反的。
有一件事可以提供帮助:假设您站在售票队伍的前面。你的老板说 "go and watch the queue, stop right before you get to the man with the hat"(戴帽子的人是 index[1])。你要停下来的地方是 index[2]。但是,如果您和您的老板站在队列的最后面并且他说 "go in the line and stop right before you get to the man with the black hat",您将停在索引 [0]。这完全取决于您从哪里开始的观点。
谢谢大家。你的解释很有道理。我希望这篇文章对正在学习 Python 切片的人有所帮助。