我对Python中的列表切片感到困惑。
一份清单
L=[0,1,2,3,4,5,6,7,8,9,10]
我想把名单倒过来
L[::-1]
正在获取[10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
。
但是,当我试着
L[10:0:-1]
我得到的[10,9,8,7,6,5,4,3,2,1]
没有0
。
无论是L[10:1:-1]
还是L[10:-1:-1]
都没有给出答案。
另一方面,L[200::-1]
,L[10:-12:-1]
给出了正确的答案,尽管L[200]
,L[-12]
超出了界限。
我想了解Python的底层逻辑
为了这个案子。
谢谢您。
Tags:
索引
3
不包括索引
10
不包括,如果要全选,应使用:但是你不能得到
L[11]
,它会抛出IndexError
,因为你只有11个元素,最大索引是10,所以L[0:11:1]
不会超出绑定范围,因为这个切片只从索引0到10访问L[11]
。-1
是切片反转的一步,同时0
也排除了而
L[10:-1:-1]
相当于L[10:10:-1]
,因为第一个-1
表示索引
-11
相当于索引0
,索引-12
相当于0
之前的索引对于Python列表切片语法,
list[start:end:step]
将获得以list[start]
开头的项目的切片列表,但是list[end]
被排除在外。因此,在您的情况下,L[10:0:-1]
将排除L[0]
,即、0和L[10::-1]
将按您的预期工作。当
start
或end
是负数时,这意味着它从列表的末尾开始计数。因此list[-1]
将获得列表中的最后一项。在您的例子中,L[10:-1:-1]
等同于L[10:10:-1]
。所以L[10:-1:-1]
将得到[]
。举个例子
如果你试着用正指数分割它
这将导致
这是因为,在上面这种情况下,切片是这样发生的,[包含:排他的],包括第一个索引,切片从这个索引开始,只在索引(5)前面结束一个索引,排他的(记住)。这就是列表切片的工作方式。
要得到列表a的最后两个值
这里,索引从6开始(包括6),一直到列表的末尾。
如果您热衷于在列表中使用负索引(如Python提供的那样)来简化索引,那么请一劳永逸地了解有关切片的包含性和独占性内容。
对于上面的相同示例,要使用负索引获取列表的最后两个数字,我们要做的是
在正索引的情况下,索引从0开始,而对于负索引,索引在-1,-2处,依此类推。所以在上面的例子中,从列表的倒数第二开始,切片到列表的末尾,这就是我们所理解的。
现在,你可以把清单倒过来
以切片的方式,列表可以通过给它一个如上所述的[开始,结束,步骤]来反转,但我想进一步澄清它。
这将生成一个新的列表,从索引2的数字开始,一直到列表的末尾,但是由于步骤是-1,我们将从索引2减少,直到达到0。因此,我们给出了前三个数字的相反列表,如下所示:
另外,要想把整个名单颠倒过来
这将从列表的长度8开始,但是从0开始,我们有0到8个索引,所以从第8个索引开始,它将以-1的顺序递减,直到列表的末尾。结果是:
我个人更喜欢用这个来颠倒列表。
相关问题 更多 >
编程相关推荐