【问题标题】:Explain what would be the output解释输出会是什么
【发布时间】:2022-01-22 19:40:35
【问题描述】:
L=[1,2,3] 
print(L[L[2]])

输出会是什么? 我是 python 的初学者,我对 List 中的这个特定内容感到困惑。我不明白这是什么意思。

【问题讨论】:

  • 嗨,欢迎来到 SO,尝试从内到外评估表达式。打印每一步的结果值。使用列表[1, 2, 3, 4, 5] 而不是问题中的内容
  • 我认为输出是索引错误...你可以运行它

标签: python list


【解决方案1】:

我将用这个列表来解释(因为你会在当前列表中得到 IndexError):

L = [1, 2, 3, 4, 5]
print(L[L[2]])

首先,Python 看到print() 函数,为了调用这个函数,Python 必须知道它的参数。因此,进一步评估论点L[L[2]]

L 是一个列表,我们可以将索引传递给括号以获取该索引处的项目。所以我们需要知道索引。我们进一步计算第一个[] 中的表达式。我是L[2]

现在我们可以轻松地计算表达式L[2]。结果是3

获取该结果并将其替换为L[2]。目前我们的完整表达是print(L[3])

我想你现在明白了……

From inside to the outside:

step1 -- >  print(L[L[2]])
step2 -- >  print(L[3])
step3 -- >  print(4)

【讨论】:

    【解决方案2】:

    你正在做的是,你得到的值是 2,应该是 3,因为 python 从 0 开始并上升。所以在那之后应该做内部大括号,然后你发现索引在 3 太大了。因为索引只上升到 2,如果我说我有三个数字,而你问我第四个数字是什么,那没有意义吧?所以这是一样的。这会导致错误。

    Traceback (most recent call last):
    File "<stdin>", line 1, in <module>
    IndexError: list index out of range
    

    这意味着您正在尝试获取一个不存在的值。我希望这能说明问题。

    【讨论】:

      【解决方案3】:

      L[L[2]] 变为 L[3],因为 L[2] 等于 3。然后,由于L 中有三个元素,并且在 Python 中索引从0 开始,这将导致IndexError

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-11-01
        • 2018-01-08
        • 2014-02-17
        • 2017-12-16
        • 1970-01-01
        相关资源
        最近更新 更多