>>"helloworld"[::-1] 'dlrowolleh' 根据语法 str[start:end:step]。在这两种情况-6ren">
gpt4 book ai didi

python - 在 python 中使用字符串扩展切片

转载 作者:太空宇宙 更新时间:2023-11-03 12:49:58 24 4
gpt4 key购买 nike

>>>"helloworld"[::1]
'helloworld'

>>>"helloworld"[::-1]
'dlrowolleh'

根据语法 str[start:end:step]。在这两种情况下,开始默认为 0。在第一种情况下,字符串是从索引值 0 开始打印的。但在第二种情况下,字符串是从索引值 -1 开始打印的。

我的问题是为什么在后一种情况下字符串从 -1 开始打印,为什么会这样?

最佳答案

根据 the documentation(添加了重点):

The slice of s from i to j with step k is defined as the sequence of items with index x = i + n*k such that 0 <= n < (j-i)/k. In other words, the indices are i, i+k, i+2*k, i+3*k and so on, stopping when j is reached (but never including j). If i or j is greater than len(s), use len(s). If i or j are omitted or None, they become “end” values (which end depends on the sign of k). Note, k cannot be zero. If k is None, it is treated like 1.

这意味着如果切片步幅为正,则省略的切片开始是序列的开始,省略的切片结束是序列的结尾。如果切片步幅为负,则相反。如果您填写以下两个值之一,您可以看到这一点:

>>> '0123456'[:3]
'012'
>>> '0123456'[:3:-1]
'654'
>>> '0123456'[3:]
'3456'
>>> '0123456'[3::-1]
'3210'

考虑这一点的一种方法是将序列可视化为一个循环,其中起点和终点是同一点。当您省略切片的一端时,您只是指定使用此“两端点”作为端点,而不是从那里去的方向。步幅标志告诉您要走哪条路,这决定了您是将“两端点”视为序列的起点还是终点。

关于python - 在 python 中使用字符串扩展切片,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12909634/

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