首页 > 解决方案 > 这段代码的过程是什么,为什么答案是1?

问题描述

这个星期一我有我的第一次 Python 考试,我自然很紧张!我目前正在通过一些旧考试,出现了这个问题:

“终端上会出现以下代码的什么结果?”

x = [1, "two", 3, "four", 5, "six"]
(x+x)[x[2]:x[2] + x[4]][(x+x)[8]]

我对其进行了测试,答案是 1。但是,我似乎无法理解为什么。如果有人愿意解释这里的逻辑,将不胜感激!

标签: pythonpython-3.xlist

解决方案


>>> x = [1, "two", 3, "four", 5, "six"]
>>> (x+x)[x[2]:x[2] + x[4]][(x+x)[8]]
1

现在这可以分为几个步骤。首先我们x与自身连接,这将产生一个新的列表:

>>> (x+x)
[1, 'two', 3, 'four', 5, 'six', 1, 'two', 3, 'four', 5, 'six']

顺便说一句,这与x * 2or相同2 * x

现在,自然地,x[2]是索引 2 处的元素,或3,并且x[4]5x[2] + x[4]评估为8

现在我们按 elements 对串联列表进行切片[3:8],得到原始索引 3...7:

>>> (x+x)[x[2]:x[2] + x[4]]
['four', 5, 'six', 1, 'two']

最后,我们再次使用索引这个列表(x + x)[8]- 这将返回连接列表的索引 8 处的元素,即 3。这用于从上一步中选择列表索引 3 处的元素1sixtwo.. .


推荐阅读