[英]How to find a max value in a list of lists by the last row and column
我有一個列表列表,需要在最后一個列表和每個列表的最后一個值中找到最大值
score_matrix = [[6, 1, 2], [1, 2, 3], [3, 4, 5]]
max_value, max_index = max((x, (i, j))
for i, row in enumerate(score_matrix)
for j, x in enumerate(row))
該代碼應找到5作為最大值,但是當前找到6。
如果只希望對每行中的最后一個值進行計數,則僅在生成器表達式中包括該值:
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))
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.