即使我強烈建議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