Python: 2 скобки расположения указателя для списка - PullRequest
0 голосов
/ 15 октября 2018
list1 = [1, 2, 3, 4]  
element = list1[1:][1]   
print(element)

Почему печатается 3?

Как это оценивается?Сначала он берет элементы list1 из индекса 1: затем он берет 1 индекс этого?

1 Ответ

0 голосов
/ 15 октября 2018

Грамматика Python определяет, как он оценивается, поскольку он создает синтаксическое дерево вашей программы.

Не вдаваясь в технические детали, такая индексация рекурсивна .Это означает, что:

foo[bar][qux]

- это сокращение от:

(foo[bar])[qux]

, поэтому такие индексы оцениваются слева направо.

Он оценивается как:

list1 = [1, 2, 3, 4]
temp = list1[1:]    # create a sublist starting from the second item (index is 1)
element = temp[1]   # obtain the second item of temp (index is 1)

(конечно, в действительности не создается temp переменная , но сам список представляет собой реальный объект , хранящийся в памяти и, следовательно, также может изменитьсясостояние и т. д.).

Итак, сначала мы срезаем, начиная со второго элемента, в результате получается список [2, 3, 4], а затем мы получаем второй элемент , который список, так что 3.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...