Python列表/子列表选择-1怪异

Mat*_*yra 37 python list sublist

所以我一直在玩python并注意到一些看起来有些奇怪的东西.-1从列表中选择的语义似乎不一致.

所以我有一个数字列表

ls = range(1000)
Run Code Online (Sandbox Code Playgroud)

当然,列表的最后一个元素,ls[-1]但如果我采用一个子列表,以便从中点到最后得到所有内容我会做

ls[500:-1]
Run Code Online (Sandbox Code Playgroud)

但这并没有给我一个包含列表中最后一个元素的列表,而是一个包含UP到最后一个元素的列表.但是,如果我这样做

ls[0:10]
Run Code Online (Sandbox Code Playgroud)

我得到一个包含第十个元素的列表(因此选择器应该包含在内),为什么它不起作用-1.

我当然可以做ls[500:]ls[500:len(ls)](这将是愚蠢的).我只是想知道-1的交易是什么,我意识到我不需要它.

dug*_*res 83

list[first:last],last不包括在内.

第10个元素是ls[9],ls[0:10]没有ls[10].


mca*_*ane 16

如果要获取包含最后一个元素子列表,请在冒号后留空:

>>> ll=range(10)
>>> ll
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> ll[5:]
[5, 6, 7, 8, 9]
>>> ll[:]
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
Run Code Online (Sandbox Code Playgroud)