gpt4 book ai didi

python-2.7 - 为什么我在 Python 中的负切片不起作用?

转载 作者:行者123 更新时间:2023-12-03 16:48:43 25 4
gpt4 key购买 nike

我是 Python 的新手,已经阅读了一些关于切片的教程,但是我在空闲时运行的示例似乎没有返回我期望的结果。例如,我已将以下列表分配给变量 a

a=[0,1,2,3,4,5,6,7,8,9]

现在我将切片理解为[我想要包括的数字:最多和不想包括的数字:step]

因此,如果我执行 a[1],我会期望 1。如果我执行 a[1:3],它将是 1,2

现在如果我执行 a[-1],我得到 9 但是如果我执行 a[-1:-5],我什么也得不到。我只看到 []。这是为什么?我希望看到 9,8,7,6

我在 Windows 7 Professional 上运行 Python 2.7

最佳答案

在这种情况下,您需要在 step 参数中添加才能获得您想要的内容:

In [1]: a=[0,1,2,3,4,5,6,7,8,9]

In [2]: a[-1:-5:-1]
Out[2]: [9, 8, 7, 6]

如果你想节省更多空间,你可以省略第一个参数:

In [3]: a[:-5:-1]
Out[3]: [9, 8, 7, 6]

Python 处理“负”切片的方式是将对象的 len 添加到负数。所以当你说 In a[-1:-5] 时,它基本上是说 a[(-1+10):(-5+10)],它等于 a[9:5],因为 start/end 指的是两者之间的所有字符(在列表中“向前”移动) ,它不返回任何东西(因此你的空白列表)。您可以通过执行以下操作来查看:

In [5]: a[-5:9]
Out[5]: [5, 6, 7, 8]

In [6]: a[5:9]
Out[6]: [5, 6, 7, 8]

因为 -5 + 10 = 5,所以负索引和正索引的结果相同。

提供 -1 step 参数告诉它从第一个元素开始,但从开始位置向后移动。

关于python-2.7 - 为什么我在 Python 中的负切片不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13672627/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com