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

为何未指定step参数时Python字符串切片返回空值?

Python字符串切片默认step返回空的原因

先明确Python切片的核心规则:

  • 切片语法为[start:end:step],默认step=1,此时切片从左往右遍历,要求start对应的位置必须在end对应的位置左侧(正索引数值更小),否则返回空字符串。
  • 当step为负数时,切片方向变为从右往左,此时要求start对应的位置必须在end对应的位置右侧(正索引数值更大),才能取出元素。

结合你用的字符串word = 'fabricated',先把字符与索引的对应关系列出来:

正索引:0:f, 1:a, 2:b, 3:r, 4:i, 5:c, 6:a, 7:t, 8:e, 9:d
负索引:-10:f, -9:a, -8:b, -7:r, -6:i, -5:c, -4:a, -3:t, -2:e, -1:d

逐个分析你的切片操作:

  1. word[5:-8]

    • start=5对应字符'c',end=-8对应字符'b'(正索引为2)
    • 默认step=1,从左往右取,但正索引5 > 2,start在end的右侧,没有符合遍历方向的元素,所以返回空字符串。
  2. word[-3:-9]

    • start=-3对应字符't'(正索引7),end=-9对应字符'a'(正索引1)
    • 默认step=1,正索引7 > 1,start在end右侧,同样没有元素可提取,返回空。

当你指定step=-1时,切片方向反转:

  • word[5:-8:-1]:从索引5('c')往回遍历,直到end=-8(正索引2)的前一个位置,取出索引5、4、3对应的字符'c'、'i'、'r',得到'cir'。
  • word[-3:-9:-1]:从索引-3(正索引7,'t')往回遍历,直到end=-9(正索引1)的前一个位置,取出索引7、6、5、4、3、2对应的字符't'、'a'、'c'、'i'、'r'、'b',得到'tacirb'。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 13:17:17