Python 多变量赋值顺序重要吗?

问题描述 投票:0回答:1

我正在研究 leetcode 206 题并想出了:

class Solution(object):
    def reverseList(self, head):
        """
        :type head: ListNode
        :rtype: ListNode
        """
        
        if head:    
            if head.next:

                curr1 = head
                curr2 = head.next
                curr1.next = None

                while curr2:
                
                    #curr1, curr2.next, curr2 = curr2, curr1, curr2.next
                    #curr2.next, curr2, curr1 = curr1, curr2.next, curr2

                    curr1, curr2, curr2.next = curr2, curr2.next, curr1
                    
                return curr1
            
        return head

上面的代码在任一注释掉的行的情况下都有效,但由于 while 循环中当前未注释的行的时间而失败。

谁能解释一下这是为什么?

我尝试更改必须更改的变量的顺序,这会以某种方式导致不同的输出。即使变量交换到相同的其他变量,只是位置不同。

python variables linked-list variable-assignment singly-linked-list
1个回答
0
投票

不同的“交换”正在改变代码的流程。如果您使用调试器,您会看到这一点

你可以这样做:

class Solution:
    def reverseList(self, head):
        if not head or not head.next:
            return head
        first = ListNode(head.val)
        last = head.next
        while last:
            first = ListNode(last.val, first) 
            last = last.next
        return first
© www.soinside.com 2019 - 2024. All rights reserved.