Python负步长切片,如何在不使用None的情况下表示等同于[::-1]的内容。

8 浏览
0 Comments

Python负步长切片,如何在不使用None的情况下表示等同于[::-1]的内容。

我很感兴趣地阅读了理解切片'result[::-1]'是什么意思?的内容。

我知道:

>>> a = 'Python'
# a[start:stop:step] 如果step < 1,start和stop会被颠倒
>>> a[::-1]
'nohtyP'

我发现:

>>> a[::-1] == a[None:None:-1]
True

但我仍然对以下问题困惑不解:

为什么我不能用一些默认的startstop值创建与a[::-1]相等的切片?

>>> a[len(a):0:-1]
'nohty'
>>> a[len(a)+1:0:-1]
'nohty'
>>> a[len(a)+1:-1:-1]
''

我可以使用显式索引来捕获Python的P吗?

0
0 Comments

Python中可以使用负步长切片来实现字符串的反转,例如print(a[-1:-len(a)-1:-1]) # nohtyP。但是这种写法可能会对很多人造成困惑。实际上,~可以用来表示反向索引。有趣的是,就在前几天我看到一个叫Guido的人曾经认为没有任何数字可以实现这个效果。

0
0 Comments

Python负数步长切片(negative step slice)是一种在列表中以相反的顺序访问元素的方法。然而,在某些情况下,我们可能无法使用负数步长切片来达到我们想要的效果,比如在没有使用None的情况下表达相当于[::-1]的效果。

这个问题的出现是因为切片中的stop值不包含在切片中。我们希望找到一个包含P(即索引0)的stop值,但由于Python在切片中使用负数的方式,这是不可能的。

解决这个问题的方法是使用None作为stop值。通过使用None,我们可以包含索引0,从而达到相当于[::-1]的效果。

具体代码如下:

a = 'python'
print(a[-1:None:-1])  # 输出:nohtyp

通过将stop值设置为None,我们可以实现从最后一个元素开始逆序访问列表。在这种情况下,我们可以得到期望的结果P。

总结一下,Python负数步长切片在某些情况下可能无法达到我们想要的效果,但通过使用None作为stop值,我们可以解决这个问题。

0