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

Python嵌套列表搜索指定ID并提取整数列表的问题求助

问题解决:在嵌套列表中搜索ID并提取对应整数

原代码存在的问题

  • 找到匹配子列表后,生成的列表推导式未被输出或返回,仅创建了一个未使用的临时列表
  • 即使匹配成功,循环不会终止,最终仍会执行末尾的print("Not found: ",index)语句
  • 不必要的内层循环:每个子列表的第一个元素即为ID,无需遍历子列表所有元素判断

修正后的代码方案

方案1:直接输出结果

import numbers

def list_search(lister, index):
    for sub_list in lister:
        # 直接检查子列表第一个元素是否为目标ID
        if sub_list[0] == index:
            # 提取子列表中的所有整数
            result = [x for x in sub_list if isinstance(x, numbers.Number)]
            print(result)
            # 找到目标后立即返回,避免执行后续的"未找到"提示
            return
    # 遍历完所有子列表仍未找到时执行
    print("Not found: ", index)

# 测试代码
list1 = [['id1','Jane','Doe',100,75,100],['id2','John','Snow',90,87,92],['id3','Peter','Pan',79,81,83]]
list_search(list1,'id2')

方案2:返回结果(更灵活)

如果希望函数返回结果而非直接打印,可使用以下版本:

import numbers

def list_search(lister, index):
    for sub_list in lister:
        if sub_list[0] == index:
            return [x for x in sub_list if isinstance(x, numbers.Number)]
    return f"Not found: {index}"

# 测试代码
list1 = [['id1','Jane','Doe',100,75,100],['id2','John','Snow',90,87,92],['id3','Peter','Pan',79,81,83]]
result = list_search(list1,'id2')
print(result)

说明

  • 两种方案都去掉了冗余的内层循环,直接通过sub_list[0]定位ID,提升效率
  • 找到匹配项后立即返回,避免无效循环和错误的"未找到"提示
  • 使用isinstance(x, numbers.Number)可以匹配所有数值类型(如果只需要整数,也可以改为isinstance(x, int))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 13:35:15