如何将列表切片直到以负索引结束

pjj*_*pjj 3 python list slice sublist

我了解到 Python 列表也可以使用负索引遍历,所以我尝试使用负索引对列表进行切片/子列表,但我无法将其切片直到结束。

我的清单是:

areas = ["hallway", 11.25, "kitchen", 18.0, "living room", 20.0, "bedroom", 10.75, "bathroom", 9.50]
Run Code Online (Sandbox Code Playgroud)

知道切片语法是[start:end]并且不计算结束索引,我做到了,upstairs = areas[-4:0]但这并没有给我列表的最后一个元素。

cs9*_*s95 5

areas[-4:0]转换为areas[len(areas) - 4: 0],它有效地从较高的索引切片到较低的索引。从语义上讲,这没有多大意义,结果是一个空列表。

您正在寻找:

>>> areas[-4:]
['bedroom', 10.75, 'bathroom', 9.5]
Run Code Online (Sandbox Code Playgroud)

如果未指定最后一个索引,则假定您一直切片到最后。


顺便说一句,0当您反向切片时,指定是有意义的。例如,

>>> areas[-4:0:-1]
['bedroom', 20.0, 'living room', 18.0, 'kitchen', 11.25]
Run Code Online (Sandbox Code Playgroud)

恰好是完全有效的。在这里,您从len(areas) - 4向下切片到(但不包括) index 0,反过来。