【问题标题】:Vairable Assignment变量赋值
【发布时间】:2020-02-21 08:59:03
【问题描述】:

在下面的链表问题中,'dummy' 和 'cur' 被分配给头部。所有操作均使用 cur 进行。但是当 dummy 返回时,这些更改会反映在那里。

sn-p 在下面

def mergeTwoLists1(self, l1, l2):
    dummy = cur = ListNode(0)
    while l1 and l2:
        if l1.val < l2.val:
            cur.next = l1
            l1 = l1.next
        else:
            cur.next = l2
            l2 = l2.next
        cur = cur.next
    cur.next = l1 or l2
    return dummy.next

怎么会这样?

【问题讨论】:

  • 他们列出了吗?
  • dummy 和 cur 都是对 ListNode(0) 的引用 - 因此对其中一个的更改会影响另一个。您需要使用两个单独的分配将 ListNode(0) 分配给 dummy 和 cur,以便它们引用 ListNode 的单独实例。
  • @HolyMackerel。不,你真的不想那样做。这样做的重点是保留对列表头部的引用。

标签: python variables linked-list output variable-assignment


【解决方案1】:

dummycur 是对同一对象 ListNode(0) 的引用。与this example on Python Tutor比较。

【讨论】:

  • 谢谢伙计。现在明白了。除非我们使用单独的参数进行赋值,否则两个 em 都会发生变化。
猜你喜欢
  • 2015-05-18
  • 2016-03-26
  • 2021-12-04
  • 2011-05-29
  • 2015-09-19
  • 2016-09-21
  • 1970-01-01
相关资源
最近更新 更多