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

Python通过索引创建删除指定字符的新字符串时切片写法疑问

错误原因分析

Python 切片遵循 [起始索引:结束索引:步长] 的规则,默认步长为 1(从左向右遍历),当步长为正时,要求起始索引对应的序列位置要在结束索引对应的位置左侧,否则切片会返回空字符串。
你写的 str[-1:-(n+1)] 存在两个核心问题:

  • 未指定负步长的情况下,-1 是序列最后一个字符的索引,位置必然在 -(n+1)(从末尾数第n+1个字符的索引)的右侧,因此切片结果为空,拼接后自然得不到预期结果。
  • 就算补充负步长写成 str[-1:-(n+1):-1],得到的也是从后往前倒序的子串,和你需要的 n+1 到末尾的正序子串不符,依然不符合需求。

举个实际示例说明:假设原字符串为 abcdef(长度6,索引0~5),要去掉索引 n=2 的字符 c:
错误写法的切片为 str[-1:-3],-1 对应位置5的字符 f,-3 对应位置3的字符 d,步长为正要求从左往右遍历,f 位置在 d 右侧,最终切片结果为空,拼接后只能得到 ab,不符合预期。

正确写法逻辑说明

你最初使用的 newstr = str[:n] + str[n+1:] 是最简洁的正确实现:

  • str[:n] 从字符串开头取到索引 n 的前一位(Python 切片遵循左闭右开规则),覆盖 n 之前的所有字符
  • str[n+1:] 从索引 n+1 取到字符串末尾,覆盖 n 之后的所有字符
    两者拼接正好跳过了索引为 n 的单个字符,完全符合需求。

小提示:str 是Python内置的字符串类型关键字,建议不要用它作为变量名,避免覆盖内置功能。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.16 18:06:08