Python:2个列表的索引位置括弧

时间:2018-10-15 20:21:31

标签: python indexing

list1 = [1, 2, 3, 4]  
element = list1[1:][1]   
print(element)

为什么打印3?

如何评估?它是否首先采用来自索引1的list1元素,然后采用该索引的1索引?

1 个答案:

答案 0 :(得分:4)

Python's grammar指定了对其进行评估的方式,因为它可以构造程序的语法树。

在技术细节上不做过多介绍,这种索引是 left递归。这意味着:

foo[bar][qux]

的缩写:

(foo[bar])[qux]

因此,这些索引是从左到右评估的。

其评估方式如下:

list1 = [1, 2, 3, 4]
temp = list1[1:]    # create a sublist starting from the second item (index is 1)
element = temp[1]   # obtain the second item of temp (index is 1)

(当然,实际上没有创建temp 变量,但是列表本身是存储在内存中的真实的 object ,因此也可能会更改状态等)。

因此,我们首先从第二个项目开始切片,得到列表[2, 3, 4],然后获得该列表中 second 个项目,因此3