Skip to content
Advertisement

What is the process of this code, and why is the answer 1?

I am having my first ever Python exam this Monday, and am naturally very nervous! I am currently going through some old exams and this question appeared:

“What result of the following code will appear on the terminal?”

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

I tested it, and the answer is 1. However, I can’t seem to wrap my head around why. If anyone would be kind enough to explain the logic here that would be much appreciated!

Advertisement

Answer

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

Now this can be broken into steps. First we concatenate x with itself, this will produce a new list:

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

This is by the way the same as x * 2 or 2 * x.

Now, naturally, x[2] is the element at index 2, or 3, and x[4] is 5. x[2] + x[4] evaluates to 8.

Now we slice the concatenated list by elements [3:8], getting indices 3…7 of the original:

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

And finally we index this list again using (x + x)[8] – this will return the element at index 8 of the concatenated list which is 3. This is used to select the element at index 3 of the list from the previous step which is the number 1 between six and two

Advertisement