You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python多变量赋值顺序是否重要?LeetCode206反转链表问题咨询

LeetCode 206题反转链表:多变量赋值顺序导致的问题解析

问题场景

我在解决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多变量赋值的顺序是否会影响结果?

核心原理:Python多变量赋值机制

Python的多变量赋值遵循先计算右侧所有表达式的结果,再按左侧顺序依次赋值的规则。也就是说,右侧所有值的计算都是基于赋值前的变量状态,但左侧的赋值顺序会直接影响后续赋值操作所使用的变量状态。

三种赋值方式的具体分析

1. 第一种可行写法:curr1, curr2.next, curr2 = curr2, curr1, curr2.next

  • 右侧先计算三个值:原curr2、原curr1、原curr2.next
  • 按顺序赋值:
    • curr1更新为原curr2
    • curr2.next指向原curr1(完成当前节点的反转)
    • curr2移动到原curr2.next(推进循环)
      整个过程逻辑清晰,链表反转和循环推进都正常执行。

2. 第二种可行写法:curr2.next, curr2, curr1 = curr1, curr2.next, curr2

  • 右侧先计算三个值:原curr1、原curr2.next、原curr2
  • 按顺序赋值:
    • curr2.next指向原curr1(完成当前节点反转)
    • curr2移动到原curr2.next(推进循环)
    • curr1更新为原curr2(作为下一次反转的前置节点)
      同样,所有操作基于赋值前的变量状态,循环正常推进,链表正确反转。

3. 超时的错误写法:curr1, curr2, curr2.next = curr2, curr2.next, curr1

  • 右侧先计算三个值:原curr2、原curr2.next、原curr1
  • 按顺序赋值:
    • curr1更新为原curr2
    • curr2被替换为原curr2.next(此时curr2已经指向了下一个节点)
    • 给curr2.next赋值为原curr1——这里的curr2已经是新的节点(原curr2.next),所以修改的是新节点的next指针,而非原本需要反转的curr2的next指针。
      这就导致原本的curr2节点没有被正确反转,且新的curr2的next指向了原curr1,后续循环中curr2会在两个节点间来回跳转,陷入死循环,最终触发超时。

结论

Python多变量赋值的顺序确实会影响结果。虽然右侧表达式的计算是一次性完成的,但左侧的赋值顺序会改变后续赋值操作所使用的变量状态。如果赋值顺序不当,会导致变量引用的对象提前被修改,进而破坏逻辑的正确性。

内容的提问来源于stack exchange,提问作者Nikola Jakovljevic

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.13 12:41:25