我在自己的 Python 3 上运行代码。我不明白这个输出sqs = [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]print(sqs[7:5:-1])[49, 36]解释器是否跳过第 0 个元素,即 0 并将列表读取为[1, 4, 9, 16, 25, 36, 49, 64, 81],然后打印第 7 个元素,即49?那么它如何打印36?它是否向前读取[64,81],然后向后读取[64,49,36],从而打印第 5 个元素,即36?如果这是正确的,则解释以下输出>>> print(sqs[7:4:-1])[49, 36, 25]我可以理解 python 跳过第 0 个元素,计数到 7 并打印49. 但是现在我指定了一个 4 的间隙。那么解释器不应该读取[64,81],然后反过来,即[64,49],并打印49?它是如何打印的25?
2 回答
撒科打诨
TA贡献1934条经验 获得超2个赞
请参阅range()
Python 文档中方法的定义。
range(start, stop, step)
在这里,start 指定了它将从哪里开始的值,stop 指定了它必须在其之前停止的值,即 stop-1。step表示跳转。现在,如果参数是类似的range(2,5,1)
,那么它会从 2 开始,然后跳 1,即加 1 到 2。现在,它又会加 1 到 3,变成 4。现在,4 等于 5 -1. 因此它停止。
列表切片是类似的东西。现在,你有这样的事情:
sqs[7:5:-1]
这类似于范围,但这里开始是 7,停止是 5,步长是 -1。因此它生成一个降序列表。现在它生成的值是:
[7, 6]
5 不算在内,因为 stop =5 并且我们只需要考虑到 stop-1,即5-(-1) = 6
。
这就是它的工作原理。
添加回答
举报
0/150
提交
取消