Обратный доступ к списку в Python - PullRequest
0 голосов
/ 26 июня 2018
a=[0,1,2,3]
for a[-1] in a :
    print a[-1]

Эта программа дает мне вывод 0 1 2 2

Я не могу его расшифровать. Я ожидал, что это напечатает список в обратном направлении. или хотя бы напечатайте 3 в одиночку. Может кто-нибудь помочь мне понять этот вывод

Ответы [ 2 ]

0 голосов
/ 26 июня 2018

на каждой итерации a[-1] (последний элемент a) присваивается значение a (список становится [0,1,2,0], затем [0,1,2,1], затем [0,1,2,2])

a=[0,1,2,3]
for a[-1] in a :
    print a[-1]

Он «работает» до конца (хотя вперед, а не в обратном порядке), где последняя итерация возвращает последнюю итерированную по значению: 2

Теперь, конечно, если вы просто хотите повторить список в обратном направлении:

for i in reversed(a):
   print(i)

reversed(a) лучше, чем a[::-1] здесь, потому что он не создает список просто для итерации по нему.

0 голосов
/ 26 июня 2018

Вы можете использовать

for x in a[::-1]:
    print x

, который идет «читает» список в обратном порядке, по одному элементу за раз.A list неявно «читается» как a[::1].Если вы хотите «прочитать» list в обратном порядке, но каждый второй элемент вы можете использовать a[::-2], что даст вам [3, 1].

Или вы можете использовать

for x in reversed(a):
    print x
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...