Python 矩阵中元素的返回索引
如何求矩阵中给定元素的i,j指数Python 矩阵中元素的返回索引,python,for-loop,matrix,Python,For Loop,Matrix,如何求矩阵中给定元素的i,j指数 #list of pairs(i, j) coordinates = [] # find given number i for ri, row in enumerate(matrix): for ei, elem in enumerate(matrix): # if i is found # then # add its index to list if i == matrix[ri][
#list of pairs(i, j)
coordinates = []
# find given number i
for ri, row in enumerate(matrix):
for ei, elem in enumerate(matrix):
# if i is found
# then
# add its index to list
if i == matrix[ri][ei]:
coordinates.append(ri, ei)
您可以通过添加
中断
、继续
和来实现这一点;其他
for i in list:
for ri, row in enumerate(matrix):
for ei, elem in enumerate(matrix):
#breaks out of the loop if condition is met
if i == matrix[ri][ei]:
coordinates.append((ri, ei))
break
#if no breaks occur, continue iterating over rows
else:
continue
# breaks out of the loop if first occurrence found
break
有两种解决方案:
break
关键字。您可以阅读有关将else
与for
和break
语句一起使用的更多信息返回声明函数,如下所示:
coordinates = []
for i in list:
coordinates.append(find(i))
坐标
输出:
[(0,1)、(0,2)、(1,0)]
首先,带有2个参数的.append()
将无法工作。您可能想附加一个元组或列表,由ri
和ei
组成
另外,请不要对变量使用内置名称,如list
,这会让每个人都感到困惑,包括解释器
至于以有效的方式解决问题,最好不要在外部循环中而是在最内部循环中迭代列表
(此处为值
),以避免多次无意义地检查相同的矩阵坐标,如下所示:
value\u seekend=[1,2,3]
矩阵=[[0,1,2],[3,2,0],[1,2,3]]
坐标=[]
对于行索引,枚举(矩阵)中的行:
如果不是所寻求的值:中断
对于列索引,枚举(行)中存在值:
如果不是所寻求的值:中断
对于查找的值索引,枚举中查找的值(查找的值):
如果值_present==寻求的值_:
坐标.append((行索引、列索引))
搜索值.pop(搜索值索引)
打破
被找到后,值将从
Values\u seekend
中删除,因此,如果以后还需要这些值,您可能需要为此目的创建一个临时列表。有一个类似的问题被问到:感谢您对我的问题的反馈。我尽量避免违反社区指导原则。这是如何发生的,在第三个循环中,寻找的索引值没有超出范围?为什么在IF语句中使用break,而在函数找到矩阵中的第一个数字后,IF break现在会中断循环?这是我的误解,但你能解释一下吗?中断
只会中断所寻找的值的循环
,以便检查下一个坐标。多亏了这一点,在迭代过程中更改列表的长度没有问题——每个坐标都有一个新的循环。Aaa,好的,谢谢你的广泛解释,现在它有意义了:)
coordinates = []
for i in list:
coordinates.append(find(i))