![](/img/trans.png)
[英]Not able to assign head after reversing a linked list iteratively in Python
[英]Reversing a linked list iteratively with Pythonic variable swapping
當我遇到一些我無法解釋的事情時,我只是在練習一些鏈接列表問題。 所以我想知道是否有人可以幫助我。
如果我有一個鏈接列表,其節點實現如下
class Node:
def __init__(self, val, next):
self.val = val
self.next = next
我最初嘗試像這樣反轉鏈接列表,它提出了一個AttributeError: 'NoneType' object has no attribute 'next'
prev = None
curr = head
while curr:
prev, curr, curr.next = curr, curr.next, prev
然后我將它修改為並且它有效,但我似乎無法圍繞它。
prev = None
curr = head
while curr:
curr.next, prev, curr = prev, curr, curr.next
我知道 Python 將 RHS 評估為一個元組,然后從左到右分配 LHS 上的值,但我似乎無法理解為什么兩個代碼片段在這種情況下不會相同。
您可能希望通過以下方式可視化事物:
您的第一個代碼相當於:
prev = None
curr = head
while curr:
tmp = curr, curr.next, prev
prev = tmp[0]
curr = tmp[1]
curr.next = tmp[2]
而您的第二個代碼相當於:
prev = None
curr = head
while curr:
tmp = prev, curr, curr.next
curr.next = tmp[0]
prev = tmp[1]
curr = tmp[2]
您會看到不同之處在於,在一種情況下,您首先更改curr
然后分配給curr.next
,而在另一種情況下,您首先更改curr.next
然后重新分配curr
。
python 不並行執行任何操作。
它必須選擇一個從左到右的順序來分配變量。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.