这段代码的过程是什么,为什么答案是1?

时间:2019-12-08 00:19:38

标签: python-3.x list

这个星期一我要进行第一次Python考试,自然很紧张! 我目前正在参加一些旧考试,并且这个问题出现了:

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

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

我测试了一下,答案是1。但是,我似乎无法为之困惑。如果有人愿意在这里解释逻辑,将不胜感激!

1 个答案:

答案 0 :(得分:3)

>>> 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 * 22 * x相同。

现在,自然地,x[2]是索引2或3的元素,而x[4]5x[2] + x[4]的值为8

现在,我们按元素[3:8]分割连接列表,得到原始索引的3 ... 7:

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

最后,我们再次使用(x + x)[8]对该列表进行索引-这将返回级联列表的索引8处的元素3。这用于从上一步中选择列表的索引3处的元素这是1six之间的数字two ...