如果你只是想每一行以统计最后值,仅包括在发电机的表达:
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]之间的最大值并找出最大值。 –
然后你需要做两个单独的测试;一列用于最后一列,另一列用于最后一列。 –