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

Python递归实现查找列表指定数字首次出现索引 不存在返回None

解决思路

你原有代码的问题根源是:当目标数字不存在于列表时,递归到空列表会返回None,上层递归直接执行1 + None会触发类型错误。不需要借助not in做预判断,只需要在递归返回时加一层判断即可:如果下层递归返回的是None,说明子列表中没有找到目标,当前层直接返回None即可,不需要执行加1操作。

修正后代码
def index(lst, number_find):
    if not lst:  # 空列表判定,直接返回None
        return None
    if lst[0] == number_find:
        return 0
    # 接收下层递归的返回结果
    sub_result = index(lst[1:], number_find)
    # 子列表未找到就直接返回None,找到才做加1计算
    return sub_result + 1 if sub_result is not None else None

# 测试用例
liste = list(range(51))
print(index(liste, 42))  # 存在元素,输出42
print(index(liste, 100)) # 不存在元素,输出None
逻辑说明
  • 每次递归先判断当前列表是否为空,为空直接返回None
  • 如果当前列表第一个元素匹配目标,直接返回索引0
  • 递归查找切片后的子列表,若子列表返回结果为None,说明目标不存在,当前层也直接返回None;若子列表返回有效索引,加1即为当前层对应的索引值
  • 全程仅使用递归逻辑,没有用到任何隐式迭代的语法

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 12:36:03