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

Python元组仅4个元素时,val[-8:-3]为何输出('indore',)而非报错?

Python元组切片超出索引范围的运行原理

首先要明确:Python中所有序列类型(包括元组、列表、字符串)的切片操作都不会因索引超出边界报错,而是自动将超出的索引修正为序列的有效边界。

针对你的例子:

  1. 先明确元组的有效索引
    元组val = ("indore", "pune", "Goa", "Delhi")长度为4,有效索引:

    • 正索引:0(indore)、1(pune)、2(Goa)、3(Delhi)
    • 负索引:-4(indore)、-3(pune)、-2(Goa)、-1(Delhi)
  2. 解析切片val[-8:-3]的执行逻辑

    • 起始索引-8:这个值小于元组最小的负索引-4,Python自动将其修正为序列的起始位置,也就是正索引0。
    • 结束索引-3:转换为正索引是4 + (-3) = 1(负索引计算公式:len(序列) + 负索引)。
    • 切片遵循左闭右开规则,即包含起始索引对应的元素,不包含结束索引对应的元素。所以实际取的是索引0到1之前的元素,也就是仅索引0对应的"indore",最终返回单元素元组('indore',)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 02:14:50