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

如何在Python二维列表中查找指定字符的位置?

二维列表中查找指定字符位置的正确方法

错误原因分析

  • 你写的list.index("c")会报错,是因为外层列表的元素是子列表,不是单个字符,外层列表里根本不存在"c"这个元素,所以抛出ValueError。
  • 第二个写法list.index[0]("c")是语法错误,index是列表的方法,不能用[]访问,正确的单行查找写法应该是list[0].index("c")——先取第0行的子列表,再调用它的index方法找"c"的列索引,但这只能处理单行,没法覆盖整个二维列表。

正确实现方式

查找第一个匹配的位置

如果只需要找到目标字符第一次出现的行和列索引,可以用遍历+异常捕获的方式:

# 注意不要用list当变量名,会覆盖内置的list类型
matrix = [["a","b","c"],["d","e","f"],["g","h","i"]]
target = "c"

for row_idx, row in enumerate(matrix):
    try:
        col_idx = row.index(target)
        print(f"字符'{target}'的位置是({row_idx}, {col_idx})")
        break
    except ValueError:
        continue
else:
    print(f"字符'{target}'不在列表中")

查找所有匹配的位置

如果目标字符可能出现多次,需要收集所有位置:

matrix = [["a","b","c"],["d","c","f"],["g","h","c"]]
target = "c"
positions = []

for row_idx, row in enumerate(matrix):
    for col_idx, char in enumerate(row):
        if char == target:
            positions.append((row_idx, col_idx))

if positions:
    print(f"字符'{target}'的所有位置: {positions}")
else:
    print(f"字符'{target}'不在列表中")

关键说明

  • 用enumerate()可以同时获取元素的索引和值,方便记录行号和列号。
  • 避免用list作为变量名,会覆盖Python内置的list类型,导致后续操作出错。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 10:25:19