You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python负索引切片实验:为何无法输出完整目标字符?

Python切片为何取不到开头的'P'?

先明确前提:你用的word应该是类似"Python"这样长度为6的字符串,索引对应关系完全符合官方教程的边缘定义——0是第一个字符的左边缘,6是最后一个字符的右边缘。

核心原因:切片的「左闭右开」规则(正序逆序通用)

Python切片的本质逻辑是包含起始位置对应的元素,不包含结束位置对应的元素,和步长方向无关:

  • 步长为正(从左到右):从start开始向右遍历,到达end位置就停止,不纳入end对应的元素。
  • 步长为负(从右到左):从start开始向左遍历,到达end位置就停止,不纳入end对应的元素。

逐个拆解你的案例

假设word = "Python",字符与边缘索引的对应关系如下:

边缘索引0123456
对应字符Python

Case1: word[6:0:-1]

  • start=6:对应最后一个字符n的右边缘,步长-1时,第一个取到的是边缘6左侧的n(对应索引5的字符)。
  • end=0:对应字符P的左边缘,当切片遍历到这个位置时就停止,不会包含边缘0左侧的P。
  • 最终遍历顺序是n→o→h→t→y,输出'nohty'。

Case2: word[6:-6:-1]

  • Python负索引的计算规则是-k = 字符串长度 - k,这里字符串长度为6,所以-6 = 6 - 6 = 0,本质和Case1完全一致,end还是0,自然也取不到P。

如何才能输出'nohtyP'?

当你留空结束索引时(word[6::-1]),end会默认设为None。对于步长为-1的切片,这会触发「遍历到字符串最开头」的规则,从而包含边缘0对应的P,最终输出'nohtyP'。


内容的提问来源于stack exchange,提问作者code_smoke

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 04:35:29