Python列表索引疑问:移除首尾各6个网格点是否正确?
Python列表切片规则解惑
先直接给你答案:你的理解完全正确,list_example[6:-6]确实是从第7个元素开始,到倒数第7个元素结束。
具体拆解规则:
- Python列表的正索引从0开始:索引0对应第1个元素,索引6自然对应第7个元素,切片的起始位置
6会包含这个元素。 - 负索引从末尾倒着计数:
-1对应最后1个元素,-6对应倒数第6个元素。而Python切片遵循左闭右开原则——包含起始索引的元素,但不包含结束索引的元素。所以当-6作为结束位置时,切片会停在它的前一个元素,也就是倒数第7个元素。
用你的例子验证:
你的list_example长度为14,元素是[1,2,3,4,5,6,7,8,9,10,11,12,13,14]:
list_example[6]的值是7(第7个元素)-6对应的正索引是14 + (-6) = 8,list_example[8]的值是9(倒数第6个元素)- 因此
list_example[6:-6]取的是索引6到7的元素,即[7,8],长度为2,正好是原长度14减去12,和你预期的一致。
新手实用小技巧:
记不清规则的时候,直接拿小列表跑测试是最直观的办法,比如:
test_list = [1,2,3,4,5,6,7,8,9,10,11,12,13,14] print(test_list[6:-6]) # 输出: [7,8]
一眼就能看明白切片的结果。
内容的提问来源于stack exchange,提问作者Jeff Severino
相关产品推荐
相关产品推荐

