gpt4 book ai didi

python - 反向字符串:string[::-1] 有效,但 string[0::-1] 和其他无效

转载 作者:IT老高 更新时间:2023-10-28 22:13:47 26 4
gpt4 key购买 nike

我有点像 python/编程新手,我只是在玩字符串切片。所以 string[::-1] 的简单字符串反转方法工作得很好,正如我们所知,但在我的代码下面还有其他实例会产生意想不到的结果:

In [1]: string = "Howdy doody"

In [2]: string[::]
Out[2]: 'Howdy doody'

In [3]: string[::-1]
Out[3]: 'ydood ydwoH'

In [4]: string[0:]
Out[4]: 'Howdy doody'

In [5]: string[0::-1]
Out[5]: 'H' # what up with this?

In [6]: string[:len(string)]
Out[6]: 'Howdy doody'

In [7]: string[:len(string):-1]
Out[7]: '' # what up with this too?

In [8]: string[0:len(string)]
Out[8]: 'Howdy doody'

In [9]: string[0:len(string):-1]
Out[9]: '' # And what up here too.

我已经评论了上面我希望字符串被反转的行,但我很惊讶为什么他们不简单地反转字符串。有谁知道这是怎么回事?

最佳答案

切片符号“[a:b:c]”表示“以 c 为增量计数,从 a 开始,直到 b 不包括在内”。如果 c为负数则向后计数,如果省略则为 1。如果 a被省略,那么你尽可能从你计数的方向开始(所以如果 c 为正,则为开始,如果为负,则为结束)。如果 b被省略,那么你会在你计数的方向上尽可能地结束(所以如果 c 为正,则为结束,如果为负,则为开始)。如果 ab是负数,它是与结尾的偏移量(-1 是最后一个字符)而不是开头。

好的,所以string[0::-1]是一个字符,它说“尽可能从索引 0 向后计数”。尽可能是字符串的开头。

string[0:len(string):-1]或就此而言string[0:anything:-1]是微妙的不同。它是空的,原因与 string[1:0] 相同。是空的。从一开始就无法到达切片的指定末端。您可以将其视为切片在开始“之前”结束(因此为空),或者您可以将结束点自动调整为等于起点(因此切片为空)。

string[:len(string):-1]表示“从末尾倒数到但不包括索引 len(string)”。无法到达该索引,因此切片为空。

你没有尝试string[:0:-1] ,但这意味着“从末尾倒数到但不包括索引 0”。所以这就是除了第一个字符之外的所有内容,颠倒了。 [:0:-1][::-1]作为 [0:len(string)-1][:] .在这两种情况下,切片的排除端都是被包含的切片的最后一个字符的索引,但省略了结束。

你也没有尝试string[-1::-1] , 与 string[::-1] 相同因为-1表示字符串的最后一个字符。

关于python - 反向字符串:string[::-1] 有效,但 string[0::-1] 和其他无效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21617586/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com