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

Python链表转换函数报错:'tuple'对象无'first'属性求助

问题分析与解决

错误根源

你碰到的tuple就是Link.empty——看Link类的定义,empty = (),这是个空元组。当递归处理到链表最后一个节点时,link.rest会变成Link.empty,此时你的代码还试图访问link.first,但元组根本没有first属性,所以触发了AttributeError。

核心问题是终止条件判断错误:你判断的是link.first is Link.empty,但正确逻辑应该先检查当前的link本身是不是Link.empty。

修复后的代码

def convert_link(link):
    """Takes a linked list and returns a Python list with the same elements.

    >>> link = Link(1, Link(2, Link(3, Link(4))))
    >>> convert_link(link)
    [1, 2, 3, 4]
    >>> convert_link(Link.empty)
    []
    """
    if link is Link.empty:
        return []
    return [link.first] + convert_link(link.rest)

说明

  1. 修正终止条件:当link等于Link.empty(空元组)时,直接返回空列表,避免去访问不存在的first属性。
  2. 递归逻辑保留:每次提取当前节点的first元素,再递归处理后续的rest部分,把结果拼接成完整列表。

这样修改后,既能正确处理普通链表,也能应对空链表的边界情况。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 17:32:40