解释这行代码(列表)

时间:2015-12-09 00:53:05

标签: python

print ( [ 2 ∗ [ k ] for k in range ( 3 ) ] [ 2 ] [ 1 ] )

这是代码,它说答案是2,有人会向我解释。我并不完全明白代码所要求的内容,而且我不知道它是如何得到2作为答案我假设它与迭代有关但我不知道真的完全理解它。我对列表一般有很多困难,这是一个关于练习考试和真实考试的问题,我想了解它

2 个答案:

答案 0 :(得分:2)

for k in range(3)会将k设置为0,然后设置为1,然后设置为2。那么2*[k]将创建一个包含两个元素的列表,其中每个元素都是k的当前值。列表推导之后的结果等同于[ [0,0], [1,1], [2,2] ][2][1],因为列表推导之后的[2]将访问列表的第3个元素(索引2处的列表),[1]将访问子列表的第二个元素,结果是2

    0      1      2     <-- first level indices 

[ [0,0], [1,1], [2,2] ]
                   ^--- this is the item you get 
   0 1    0 1    0 1    <-- second level indices

答案 1 :(得分:0)

你可以将单个陈述实际分解为4,它会自然更有意义。

>>> range ( 3 )
[0, 1, 2]
>>> [ 2 * [ k ] for k in [0, 1, 2] ] # where 2*[0] returns [0,0] and so on
[[0, 0], [1, 1], [2, 2]]
>>> [[0, 0], [1, 1], [2, 2]][2]
[2, 2]
>>> [2, 2][1]
2