print ( [ 2 ∗ [ k ] for k in range ( 3 ) ] [ 2 ] [ 1 ] )
这是代码,它说答案是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