如果你只是想每一行以統計最後值,僅包括在發電機的表達:
max_value, max_index = max((row[-1], (i, len(row) - 1))
for i, row in enumerate(score_matrix))
row[-1]
取得給定行的最後一個值,len(row) - 1
產生最後一個元素的索引。
如果您還需要最後的行,那麼將這些元素添加到單獨的序列中;您可以使用itertools.chain()
兩個發電機組合:
from itertools import chain
max_value, max_index = max(chain(
((row[-1], (i, len(row) - 1)) for i, row in enumerate(score_matrix)),
((c, (len(score_matrix) - 1, j)) for j, c in enumerate(score_matrix[-1]))
))
這不包括在最後一排的列的兩倍,但對於一個額外的價值是不值得切片的最後一行。
演示:
>>> from itertools import chain
>>> score_matrix = [[6, 1, 2], [1, 2, 3], [3, 4, 5]]
>>> max(chain(
... ((row[-1], (i, len(row) - 1)) for i, row in enumerate(score_matrix)),
... ((c, (len(score_matrix) - 1, j)) for j, c in enumerate(score_matrix[-1]))
... ))
(5, (2, 2))
所以應該找中2,第3和5的最大(即每行的最後的值)? –
它應該看2,3和5以及[3,4,5]之間的最大值並找出最大值。 –
然後你需要做兩個單獨的測試;一列用於最後一列,另一列用於最後一列。 –