我现在正在攻读计算机科学专业,我完全不明白它是如何工作的:
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]]我得到一个列表索引超出范围错误。我在这里感到困惑任何人都可以帮忙吗?
答案 0 :(得分:11)
L[3]
为5
,L[L[3]]
为L[5]
为0
,0 - 1
为-1
。
答案 1 :(得分:4)
从内到外,这些问题最好一步到位。
所以,L [3]给你5.再次使用这个值(5)作为列表的索引,即L [5],这给你0.最后,0 - 1 = -1,你的答案
答案 2 :(得分:2)
这类似于带有数学函数的function composition(例如f(g(x)))。
我们从内到外查看列表并进行操作,因此我们得到L[L[3]] -> L[5] -> 0
,并从中减去一个以获得-1
。
当您选择下一个for-instance时,L[L[1]] = L[6] -> 9
。最后,L[L[2]] = L[7] -> IndexError
。
完全是从内到外评估复合索引(或函数)。
答案 3 :(得分:0)
让我们通过显示中间结果来完成答案,即使它们没有显示:
L[3]
为5,因此L[L[3]]
为L[5] = 0
,L[L[3]] -1 = 0-1 = -1
答案 4 :(得分:0)
L [2] = 7且列表只有7个元素,即indice 0..6。因此,访问L [L [2]] = L [7]超出范围......
答案 5 :(得分:0)
它说,得到l [3]的数字是5,然后使用它,所以得到l [5]的数字为0,然后减去1 .... ta dah!
答案 6 :(得分:0)
以下是按步骤分解的答案:
L = [8,6,7,5,3,0,9]
L [L [3]] - 1 = -1
L [3] = 5,因此L [L [3]] = L [5] = 0