您可以使用itertools.chain()
爲:
from itertools import chain
def maxPos2D(table):
chained_list = list(chain(*table)) # create single list from table
max_val = max(chained_list) # find max value in list
max_index = chained_list.index(max_val) # find index of max value
columns = len(table[0]) # number of columns
return [max_index/columns, max_index%columns] # return [column, row]
在你不想的情況下導入任何模塊,你可以創建一個功能爲:
def maxPos2D(table):
max_index_parent, max_val = 0, max(table[0]) # initialise values based
max_index_child = table[0].index(max_val) # on 1st sub-list
for i, child in enumerate(table[1:], 1):
max_child_val = max(child)
if max_child_val > max_val: # update values based on each sub-list
max_index_parent, max_val = i, max_child_val
max_index_child = child.index(max_val)
return [max_index_parent, max_index_child]
這是低效版本的程序,其複雜度爲O(n^2)
,因爲OP可能更容易理解。 不建議進場做它:
def maxPos2D(table):
max_index_parent, max_index_child, max_val = None, None, None
for i, child in enumerate(table):
for j, val in enumerate(child):
if max_val is None or val > max_val:
max_index_parent, max_index_child, max_val = i, j, val
return [max_index_parent, max_index_child]
採樣運行:
>>> maxPos2D([[1, 2, 4], [7, 8, 9], [4, 5, 6]])
[1, 2]
我不太相信你的榜樣。你能否給你的函數提供一個真正有效的輸入,並輸出一個精確的有效輸出? – idjaw
現在解釋什麼在代碼中不起作用。此外,如果您修復了自己的縮進以確保代碼是您自己的代碼的精確表示,那麼它會有所幫助。編輯 – idjaw
我有一個功能應該執行的操作的屏幕截圖。我應該確定列表中最大數字的索引。所以,我試圖找到索引的行和列。如果列表中最大的數字是60,並且它是第一個列表中的最後一個數字,我的函數應該返回[0,2]。我只是很困惑,真的不知道從哪裏開始。 – tholme