从长度到开始索引切片



当切一个字符串时,我知道符号是[start:stop:counter]。如果是这样的话,如果我有string = "hello",为什么string[5:0:-1]返回olle而不是ollehstring[::-1]为我返回olleh,所以这很好,但我对为什么第一个语法不起作用感到困惑

如果我们查看每个术语,这将依次创建:

string[5] doesn't exist, so adds nothing
string[4] is "o"
string[3] is "l"
string[2] is "l"
string[1] is "e"

string[0] 不会被调用,因为 Python 范围不会执行最后一个元素。

请记住,字符串的切片是从:up到(但不包括(counter因此,当您将-1作为计数器传递时,这基本上是指从最后一个字符到第一个字符,但不包括它。因此:olle.

看到如果删除 0,您也会得到完整的字符串:

string[5::-1]

返回:

olleh

string[5:0:-1]这里,结束索引0被排除在外,这是字符h。为了包括拳头炭以及string[5::-1]

a[start:stop]  # items start through stop-1
a[start:]      # items start through the rest of the array
a[:stop]       # items from the beginning through stop-1
a[:]           # a copy of the whole array

如您所见,索引5超出了范围:

string = "hello"
#         01234
print(string[5:0:-1])

但没关系,python 会通过忽略它来处理它。

喜欢:

print(string[100:0:-1])

输出:

olle

你知道在像string[0, 3]这样的切片中,它将返回'hel'(不包括索引3(,所以反向切片也是如此,不包括停止索引。

您的停止索引是0,这是'h',因此,输出不包括'h'


如果你想要的是反转字符串,你可以:

print(string[::-1])

输出:

olleh

最新更新