扩展切片语法实际上对负步骤有什么作用?

2024-09-27 04:27:54 发布

您现在位置:Python中文网/ 问答频道 /正文

python中的扩展切片语法被解释为“a[n:m:k] returns every kth element from n to m”。

这给了我一个很好的想法,当k为正时,我会期望什么。但是我不知道如何解释负k的a[n:m:k]。我知道a[::-1]会反转a,而a[::-k]会占用反转a的第k个元素

但是这是对k正数定义的推广吗?我想知道a[n:m:k]是如何定义的,这样(例如)我就能理解为什么:

"abcd"[-1:0:-1] = "dcb"

是不是a[n:m:-k]颠倒了序列a,然后取原始索引从n开始,在m之前结束的元素?我不这么认为,因为这个模式不符合我尝试过的n和m的其他值。但我不知道这到底是怎么定义的,搜索也让我一无所获。


Tags: tofrom元素定义语法切片序列element
2条回答

[-1:0:-1]意思是:从索引len(string)-1开始,向上移动到0(不包括),并采取-1(相反)的步骤。

因此,将获取以下索引:

le-1, le-1-1, le-1-1-1  .... 1  # le is len(string)

示例:

In [24]: strs = 'foobar'

In [25]: le = len(strs)

In [26]: strs[-1:0:-1]  # the first -1 is equivalent to len(strs)-1

Out[26]: 'raboo'

In [27]: strs[le-1:0:-1]   
Out[27]: 'raboo'

Python文档(here's the technical one;对^{}的解释更容易理解)比简化的“every kth元素”解释更正确。切片参数被恰当地命名为

slice[start:stop:step]

因此切片从start定义的位置开始,在到达stop位置之前停止,并通过step项从一个位置移动到下一个位置。

相关问题 更多 >

    热门问题