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

Python二维列表元素查找异常及索引通用获取方法咨询

问题产生原因

list1是二维列表,它的顶层元素是两个子列表[1,3,5,7]和[18,9,23,30]。你在循环中使用if element in list1做判断时,in运算符只会检查待判断元素是否和list1的顶层元素相等,并不会递归遍历子列表内部的元素。也就是说你的判断逻辑等价于“1是否等于[1,3,5,7]或[18,9,23,30]”,显然判断结果为False,所以三次循环都会输出Element not in list1。
你最开始单独写的print(list1[0].index(1))是直接访问list1的第0个子列表,在子列表内部查找元素,所以能得到正确结果。

无需提前知道行列号的通用查找方法

可以通过enumerate遍历二维列表的行索引与行内容,再在每行内查找目标元素,匹配成功后直接返回对应的行号、列号即可,示例代码如下:

# 查找目标元素第一次出现的行列索引
def find_2d_element(two_dim_list, target):
    for row_idx, row in enumerate(two_dim_list):
        if target in row:
            col_idx = row.index(target)
            return (row_idx, col_idx)
    # 元素不存在时抛出异常,也可以根据需求自定义返回值
    raise ValueError(f"元素{target}不存在于二维列表中")

# 测试用例
list1=[[1,3,5,7],[18,9,23,30]]
print(find_2d_element(list1, 1)) # 输出 (0, 0)
print(find_2d_element(list1, 23)) # 输出 (1, 2)

如果需要查找目标元素所有出现的位置,修改为存储所有匹配结果即可:

# 查找目标元素所有出现的行列索引
def find_all_2d_element(two_dim_list, target):
    result = []
    for row_idx, row in enumerate(two_dim_list):
        if target in row:
            col_idx = row.index(target)
            result.append((row_idx, col_idx))
    return result

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 19:36:03