Проблема с распаковкой кортежа при реверсировании связанного списка с использованием распаковки кортежа в Python [дубликPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Проблема с распаковкой кортежа при реверсировании связанного списка с использованием распаковки кортежа в Python [дублик

Сообщение Anonymous »


Реверсирование связанного списка Leetcode-206

Первоначальный подход:

класс ListNode: def __init__(self, val=0, next=None): self.val = значение self.next = следующий defverseList(self, head: Необязательно[ListNode]) -> Необязательно[ListNode]: предыдущая = Нет пока голова: # print("-",prev,head) temp_nxt = head.next head.next = предыдущая предыдущая = глава голова = temp_nxt # print("=",предыдущая,голова) вернуть предыдущую Я столкнулся с неожиданной проблемой, когда пытался написать этот код с использованием присваивания кортежей/параллельного присваивания в Python. Назовем это Метод-1
.
prev, head, head.next = head, head.next, prev Я получаю сообщение об ошибке, и результат не соответствует ожиданиям.

AttributeError: объект «NoneType» не имеет атрибута «следующий» ^^^^^^^^^ предыдущая, глава, голова.следующая = глава, голова.следующая, предыдущая Выход: [1,2,3]

- Нет ListNode{val: 1, next: ListNode{val: 2, next: ListNode{val: 3, next: None}}} = ListNode{значение: 1, следующий: ListNode{значение: 2, следующий: Нет}} ListNode{значение: 2, следующий: Нет} - ListNode{значение: 1, следующий: ListNode{значение: 2, следующий: Нет}} ListNode{значение: 2, следующий: Нет} Однако, когда я использую следующий код, он работает нормально: Метод 2

prev, head.next, head = head, prev, head.next Выход: [1,2,3]

- Нет ListNode{val: 1, next: ListNode{val: 2, next: ListNode{val: 3, next: None}}} = ListNode{значение: 1, следующий: нет} ListNode{значение: 2, следующий: ListNode{значение: 3, следующий: нет}} - ListNode{значение: 1, следующий: нет} ListNode{значение: 2, следующий: ListNode{значение: 3, следующий: нет}} = ListNode{значение: 2, следующий: ListNode{значение: 1, следующий: Нет}} ListNode{значение: 3, следующий: Нет} - ListNode{значение: 2, следующий: ListNode{значение: 1, следующий: Нет}} ListNode{значение: 3, следующий: Нет} = ListNode{значение: 3, следующий: ListNode{значение: 2, следующий: ListNode{значение: 1, следующий: Нет}}} Нет Мне трудно понять, почему первый подход вызывает проблему.

Может ли кто-нибудь объяснить причину этого и предложить решение или обходной путь? Кроме того, мы будем очень признательны за любую информацию о том, как работает назначение кортежей в этом контексте. Спасибо!
Реклама
Ответить Пред. темаСлед. тема

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

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

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

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

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • C# удалить zip-файл после распаковки, нужно проверить завершение распаковки?
    Anonymous » » в форуме C#
    0 Ответы
    77 Просмотры
    Последнее сообщение Anonymous
  • Как сохранить/восстановить состояние распаковки Zstandard для продолжения распаковки?
    Anonymous » » в форуме Python
    0 Ответы
    30 Просмотры
    Последнее сообщение Anonymous
  • Проблема при печати рекурсивной функции с распаковкой списка
    Anonymous » » в форуме Python
    0 Ответы
    2 Просмотры
    Последнее сообщение Anonymous
  • Проблема при печати рекурсивной функции с распаковкой списка
    Anonymous » » в форуме Python
    0 Ответы
    2 Просмотры
    Последнее сообщение Anonymous
  • Понимание списка с итерационным распаковкой?
    Anonymous » » в форуме Python
    0 Ответы
    6 Просмотры
    Последнее сообщение Anonymous

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