簡體   English   中英

如何在最后一行和最后一列的列表列表中查找最大值

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM