Python列表索引疑问:解析m[6 - [3][0]: -1]的执行逻辑
拆解
randomDigs = m[6 - [3][0]: -1]的执行逻辑 嘿,作为Python新手碰到这种看起来有点绕的切片很正常,我来一步步帮你拆解这段代码的逻辑,保证你看完就懂!
首先先明确咱们的原始列表:
m = [1,1,7,7,0,0,0,0,1,6,6,9,7,9,2]
这条赋值语句的核心是Python的切片语法,我们把它拆成「起始索引」和「结束索引」两部分来理解:
1. 先算起始索引:6 - [3][0]
这里的[3][0]是个有点冗余但不难懂的写法:
[3]其实就是创建了一个只装了数字3的列表[3][0]就是取这个列表的第0个元素(也就是它唯一的元素),结果就是3
所以起始索引的计算就是6 - 3 = 3
2. 再看结束索引:-1
在Python的切片规则里:
- 负数索引代表从列表末尾往前数的位置:
-1对应最后一个元素,-2对应倒数第二个,以此类推 - 切片
m[起始:结束]的规则是「包含起始位置的元素,但不包含结束位置的元素」
所以这里写-1,意思就是我们要取到倒数第一个元素的前一个位置(也就是列表的倒数第二个元素)
3. 验证最终结果
现在把起始索引3和结束索引-1代入,就是取m[3]到m[-2]的所有元素:
从原始列表里数一下:
- m[3] = 7
- m[-2] = 9(列表倒数第二个元素)
把这些元素连起来就是:[7, 0, 0, 0, 0, 1, 6, 6, 9, 7, 9],和你得到的输出完全对得上!
最后提一句:这段代码里[3][0]的写法其实没必要,直接写3就够了,可能是原作者随手写了个有点奇怪的冗余表达式~
内容的提问来源于stack exchange,提问作者user220188
相关产品推荐
相关产品推荐

