在一个列表中,L[L[3]]是什么?

3

我现在正在学习计算机科学的期末考试,但我完全不理解这是如何工作的:

L = [ 8, 6, 7, 5, 3, 0, 9 ]
30. L[L[3]] - 1 等于什么? (A) * -1 (B) 错误 (C) 8 (D) 4 (E) 7

答案是-1。因此,为了测试它的工作原理,我只需执行 L[L[3]],答案是0,然后我执行 L[L[4]],结果等于5,接着我执行 L[L[1]],得到了9,但如果我执行 L[L[2]],就会出现一个列表索引超出范围的错误。我非常困惑,请有人帮帮我吗?

7个回答

11

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


4
这种类型的问题最好逐步解决,从内到外逐步进行操作。 因此,L[3]给出了5。使用这个值(5)再次作为列表的索引,即L[5],然后得到0。最终,0-1=-1,这就是你的答案。

2
这类似于使用数学函数进行函数组合(例如,f(g(x)))。
我们从内向外处理列表,因此得到L[L[3]] -> L[5] -> 0,然后从中减去1得到-1。
当您考虑下一个例子时,L[L[1]] = L[6] -> 9。最后,L[L[2]] = L[7] -> IndexError。
这一切都是关于从内向外评估复合索引(或函数)的方法。

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!


0

以下是步骤分解的答案:

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

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

L[3] = 5,因此 L[L[3]] = L[5] = 0


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接