python赋值操作如何工作?

时间:2018-07-19 02:34:21

标签: python syntax variable-assignment

您好,我在执行leetcode Q21时发现了以下解决方案:https://leetcode.com/problems/merge-two-sorted-lists/discuss/9735/Python-solutions-(iteratively-recursively-iteratively-in-place)

# iterative
def mergeTwoLists(self, l1, l2):
    """
    :type l1: ListNode
    :type l2: ListNode
    :rtype: ListNode
    """

    dummy = ret = ListNode(0)
    while l1 and l2:
        if l1 < l2:
            ret.next = l1
            l1 = l1.next
        else:
            ret.next = l2
            l2 = l2.next
        ret = ret.next
    ret.next = l1 or l2
    return dummy.next 

我不太明白为什么返回dummy.next会给出正确的答案。 根据我的理解,dummy = ret = ListNode(0)

tmp = ListNode(0)
dummy = tmp
ret = tmp
因此,无论您如何修改ret都不应影响dummy的值。我猜想它与Python如何执行复制/赋值的深层机制有关,但是我找不到关于此问题的好的文档。在解释问题或提供文件方面的任何帮助将不胜感激!

0 个答案:

没有答案