Python 在矩阵中查找元素的最长对角线

Python 在矩阵中查找元素的最长对角线,python,matrix,diagonal,Python,Matrix,Diagonal,我对编程相当陌生,所以我的问题可能看起来很幼稚。 我需要一个给定如下矩阵的函数: m=[['2','3','2','4','2','2','1'] ['5','2','6','2','7','2','2'] ['5','3','9','4','2','6','8']] -查找元素“2”的最长对角线(它不必从第一行开始): -输出矩阵中对角线第一个元素的位置: m[0][2] 谢谢结果=[0,0] maxdiag=0 对于范围(0,len(m))内的i: 对于范围(0,len(m[

我对编程相当陌生,所以我的问题可能看起来很幼稚。 我需要一个给定如下矩阵的函数:

m=[['2','3','2','4','2','2','1']
   ['5','2','6','2','7','2','2']
   ['5','3','9','4','2','6','8']]

-查找元素“2”的最长对角线(它不必从第一行开始):

-输出矩阵中对角线第一个元素的位置:

m[0][2]
谢谢

结果=[0,0]
maxdiag=0
对于范围(0,len(m))内的i:
对于范围(0,len(m[i])内的j:
k=0;
而(i+kmaxdiag):
maxdiag=k;
结果[0]=i;
结果[1]=j;
坐标存储在
结果中

在我看来,这是一个经验性的解决方案


在矩阵上迭代,当您找到一个
'2'
时,将迭代器
k
添加到
i
j
(例如,如果您在
m[1][1]
上找到一个
'2'
,循环将在
m[2][2]
m[3][code>上迭代,等等),当您发现比当前对角线更高的对角线时,请替换结果中的坐标(抱歉我的英语不好)。

欢迎访问SO.com,请展示您的尝试。你自己做了什么?为什么它不起作用呢?我现在想不出一个优雅的解决方案,但是使用嵌套的
for
循环的蛮力方法应该非常简单。莎拉,你试过什么了吗?还有,矩阵的形状有什么限制吗?还有,对角线必须从第1行开始吗?不必。这不是一个简单的算法。你能解释一下你的答案吗?
m[0][2]
result=[0,0]
maxdiag = 0
for i in range (0, len(m)):
  for j in range (0, len(m[i])):
    k = 0;
    while (i+k < len(m) and j+k < len(m[0]) and m[i+k][j+k] == '2'):
      k+=1;
      if (k > maxdiag):
        maxdiag = k;
        result[0]=i;
        result[1]=j;