📜  Python - 矩阵中的字符坐标(1)

📅  最后修改于: 2023-12-03 14:45:54.823000             🧑  作者: Mango

Python - 矩阵中的字符坐标

有时需要在一个矩阵中查找某个字符出现的位置,本文将介绍使用 Python 找到矩阵中字符的坐标。

方法一 - 遍历矩阵

最朴素的方法就是遍历整个矩阵,找到匹配的字符时返回坐标。

def find_char(matrix, char):
    for row in range(len(matrix)):
        for col in range(len(matrix[0])):
            if matrix[row][col] == char:
                return row, col
    return -1, -1

该函数接收两个参数,一个是矩阵,一个是要查找的字符。函数会返回一个二元组,分别是字符出现的行和列,如果没找到则返回 (-1, -1)。

方法二 - 使用内置函数

Python 中有内置函数 index 可以用来查找字符在字符串中的位置,那么对于一个矩阵,我们可以将每一行作为一个字符串,然后调用 index 函数。如果找不到则会抛出异常,因此需要使用 try-except 捕获异常。

def find_char(matrix, char):
    for row in range(len(matrix)):
        try:
            col = matrix[row].index(char)
            return row, col
        except ValueError:
            pass
    return -1, -1

该函数与上一个函数的作用相同,但是实现方式不同。该函数先遍历行,然后在每一行上调用 index 函数查找字符出现的位置,如果找到则返回坐标,否则继续查找下一行。

测试

下面是一个简单的测试,使用方法一和方法二查找字符在矩阵中的坐标,并输出结果。可以看到两种方法返回的结果相同。

matrix = [
    ['A', 'B', 'C'],
    ['D', 'E', 'F'],
    ['G', 'H', 'I']
]
char = 'E'

row, col = find_char(matrix, char)
print(f"方法一:字符'{char}'在矩阵中的坐标为({row}, {col})")

row, col = find_char_2(matrix, char)
print(f"方法二:字符'{char}'在矩阵中的坐标为({row}, {col})")

输出如下:

方法一:字符'E'在矩阵中的坐标为(1, 1)
方法二:字符'E'在矩阵中的坐标为(1, 1)