Python切片操作符stop参数困惑:为何lst[0:4]结果不符预期
理解Python切片的stop参数
Python的切片操作符[start:stop:step]遵循左闭右开的规则——切片会包含start索引对应的元素,但不包含stop索引对应的元素。
以你的代码为例:
lst = [1,2,3,4,5] print(lst[0:4])
列表lst的索引对应关系是:
- 索引0 → 1
- 索引1 → 2
- 索引2 → 3
- 索引3 → 4
- 索引4 → 5
切片[0:4]的意思是:从索引0开始取,一直取到索引4的前一个位置,也就是索引3为止。所以最终得到的是[1,2,3,4],而不会包含索引4对应的元素5。
这种设计有几个实用的好处:
- 切片的长度可以直接用
stop - start计算,比如0:4的长度是4,和结果的元素数量完全匹配 - 方便拆分列表,比如
lst[0:4]和lst[4:5]刚好能把原列表分成不重叠、无遗漏的两部分 - 当需要取到列表末尾时,可以省略
stop参数,直接写lst[0:]或者lst[:],不需要手动计算列表长度
如果想包含索引4对应的元素5,你可以把stop设为5,或者直接省略stop:
print(lst[0:5]) # 输出 [1,2,3,4,5] print(lst[:]) # 输出 [1,2,3,4,5]
内容的提问来源于stack exchange,提问作者Graz
相关产品推荐
相关产品推荐

