2012-04-15 155 views
3

林现在攻读计算机科学的决赛,我不明白这是如何工作的一切:列表中的L [L [3]]是什么?

 
L = [ 8, 6, 7, 5, 3, 0, 9 ] 

30. L[L[3]] - 1 is? 
(A) * -1 
(B) an error 
(C) 8 
(D) 4 
(E) 7 

答案是-1 ..因此,测试是如何工作的我只是做了L [L [3 ]]和答案是0,然后我做L [L [4]]和thar等于5,然后我做L [L [1]]给出了9,但是如果我去L [L [2]]我得到列表索引超出范围错误。我在这里感到困惑任何人都可以帮忙吗?

回答

11

L[3]5L[L[3]]L[5]0,和0 - 1-1

0

让我们穿行答覆表示中间结果,即使它们是不显示:

L[3]是5,因此L[L[3]]L[5] = 0,和L[L[3]] -1 = 0-1 = -1

0

L [2] = 7,该列表只有7个元素,即0..6。因此,访问L [L [2]] = L [7]超出范围...

0

它说,得到数字l [3]这是5,然后使用它,所以得到数字在l [5]它是0,然后减去1 .... ta dah!

4

这些问题最好从内到外一步一步地完成。所以,L [3]给你5.再次使用这个值(5)作为列表中的索引,即L [5],这会给你0最后,0-1 = -1,你的回答。

2

这类似于具有数学函数(例如f(g(x)))的function composition

我们把我们的清单和工作从内到外,所以我们得到L[L[3]] -> L[5] -> 0,并从中减去1得到-1

当你采取下一个例子,L[L[1]] = L[6] -> 9。最后,L[L[2]] = L[7] -> IndexError

这完全是关于从内到外评估组合索引(或函数)。

0

下面是答案在步骤分解:

L = [8,6,7,5,3,0,9]

L [L [3]] - 1 = -1

L [3] = 5,所以L [L [3]] = L [5] = 0

相关问题