Порядок операций для трех (или более) различных назначений переменных с использованием связанного списка в Python 3Python

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Порядок операций для трех (или более) различных назначений переменных с использованием связанного списка в Python 3

Сообщение Anonymous »


Я пишу простой код для реверсирования связанного списка и понял, что назначения можно выполнять в одной строке, и это показалось мне очень крутым:

def Reverse(head): предыдущий_узел = Нет curr_node = голова в то время как curr_node: prev_node, curr_node.next, curr_node = curr_node, prev_node, curr_node.next вернуть предыдущий_узел Но я заметил, что код дает сбой, если я меняю порядок присвоений между curr_node.next в левой части (соответствует prev_node в правой части) и curr_node в левой части (...curr_node.next в правой части) def Reverse(head): предыдущий_узел = Нет curr_node = голова печать (curr_node.data) печать(curr_node.next.data) печать (предыдущий_узел) в то время как curr_node: prev_node, curr_node, curr_node.next = curr_node, curr_node.next, prev_node вернуть предыдущий_узел Ввод

1 2 3 4 Выход

1 2 Никто Но в цикле while возникает следующая ошибка (только во втором блоке кода; первый работает нормально)

prev_node, curr_node, curr_node.next = curr_node, curr_node.next, prev_node AttributeError: объект «NoneType» не имеет атрибута «следующий» Ближайшее обсуждение этой темы, которое я смог найти, было здесь. В котором говорится, что сначала оценивается RHS, слева направо. Я думаю, это означает, что сохраняется curr_node, затем prev_node, затем curr_node.next. Затем они назначаются prev_node, curr_node.next и curr_node соответственно. Я не вижу разницы между первым и вторым примером. Я упускаю что-то простое?

Кто-нибудь знает, почему первый пример выполняется, а второй выдает ошибку?
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»