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

Python嵌套列表查找元素索引返回值恒为0问题排查

问题根因

原代码存在3个核心错误,导致运行结果不符合预期:

  • 语法错误:player_list中的玩家名称是字符串类型,未使用引号包裹,运行时会被识别为未定义变量直接抛出NameError。
  • 索引取值逻辑错误:匹配到玩家名称后,调用的是子列表player_info的index()方法,玩家名称固定在每个子列表的0号位,因此无论匹配到哪个玩家,得到的x值永远是0,最终永远返回大列表中索引为0的Bruce Wayne的信息,完全没有获取外层大列表的位置索引。
  • 分支逻辑无效:if和elif的判断条件完全一致,写在elif里的x = -1逻辑永远不会被触发;且如果遍历完都没匹配到玩家,变量x根本没有被定义,会直接抛出变量不存在的错误。
修正后可运行代码
# 所有字符串类型的玩家名需要用引号包裹
player_list = [
    ['Bruce Wayne', 5, 5, 0, 0, 100, 15],
    ['Jessica Jones', 12, 0, 6, 6, 10, 6],
    ['Johnny Rose', 6, 2, 0, 4, 20, 10],
    ['Gina Linetti', 7, 4, 0, 3, 300, 15],
    ['Buster Bluth', 3, 0, 2, 1, 50, 1]
]

def find_player(player_list, player_name):
    # 用enumerate同时遍历外层列表的索引和子列表内容
    for outer_idx, player_info in enumerate(player_list):
        if player_info[0] == player_name:
            # 匹配到直接返回外层列表的索引
            return outer_idx
    # 循环走完没匹配到,返回-1
    return -1

player_name = str(input("Please enter name:"))
y = find_player(player_list, player_name)
if y == -1:
    print(player_name, "was not found in player list")
else:
    print(player_list[y])
效果说明
  • 输入存在的玩家名(如Jessica Jones),会正确返回对应外层索引1,打印该玩家的全量数据。
  • 输入不存在的玩家名,会正确返回-1,打印未找到提示。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 18:48:28