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

Python递归过滤姓名函数问题:无法返回匹配首字母的姓名列表

递归过滤姓名列表的问题修复

你的代码有两个核心问题导致无法正常工作:

  • 缺少递归终止条件:当传入的names为空列表时,访问names[0]会直接触发IndexError,递归必须先处理这种边界情况。
  • 未合并递归结果:不管第一个元素是否匹配,你都只处理了单个元素,没有把后续递归调用返回的结果合并到当前的result里——比如else分支里调用filter_names(names[1:], initial)但完全没用到它的返回值,if分支也没处理剩下的元素。

以下是修正后的递归实现:

def filter_names(names, initial):
    # 递归终止条件:空列表直接返回空
    if not names:
        return []
    # 处理当前第一个元素,符合条件则加入临时列表
    current = [names[0]] if names[0][0] == initial else []
    # 递归处理剩余元素,合并当前结果与递归结果
    return current + filter_names(names[1:], initial)

或者你也可以用extend的方式合并结果,逻辑和上面一致:

def filter_names(names, initial):
    if not names:
        return []
    result = []
    if names[0][0] == initial:
        result.append(names[0])
    # 把递归处理剩余元素的结果扩展到当前列表
    result.extend(filter_names(names[1:], initial))
    return result

测试示例:

test_names = ["Alice", "Bob", "Charlie", "Anna", "Alex"]
print(filter_names(test_names, "A"))  # 输出: ['Alice', 'Anna', 'Alex']

内容的提问来源于stack exchange,提问作者Kevin José Falcón Armas

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 04:20:35