即使我强烈建议NumPy的(见OP的问题,下面的评论),这个人是没有NumPy的(仅使用内置函数enumerate
,也适用于衣衫褴褛的数组):
dist = [[ 0.0,
1804.04,
2120.09,
5502.24],
[ 1804.04,
0.0,
7395.44,
5828.17]] # list of lists
maximum, max_line, max_col = 0, 0, 0 # !!!
for line, l in enumerate(dist):
for col, c in enumerate(l):
if c > maximum: maximum, max_line, max_col = c, line, col
print(maximum, max_line, max_col)
在标有!!!
行假定只有正值是在你的矩阵dist
(其从名字dist
及其在OP的未经编辑的柱对称性,以及在零元素对角线我认为是合理的)。否则,必须为maximum
选择较小的起始值。
下面是它如何与NumPy的(见np.argmax
和np.unravel_index
)工作:
import numpy as np
dist = np.array(dist) # array
print(np.unravel_index(np.argmax(dist), dist.shape))
为什么不NumPy的?使用NumPy非常简单**和快速**,您只需使用'np.argmax'和'np.unravel_index'。 – Michael
@Michael感谢您的评论和编辑。我的任务需要通过内置函数完成。 – feys
我找到了答案: 我在范围内(len(dist)): 对于范围内的j(len(dist)): 如果dist [i] [j] == max(max(dist)): max_index =(i,j) – feys