如何在相同索引处找到两个列表的最大值

How to find the maximum of two lists at the same indices

我试图在同一索引处找到两个不同列表的最大值。示例:

l1 = [11,4,7,9]
l2 = [2,10,9,6]

此示例的结果是 l1 和 l2 都在其第三个索引处最大化(其中 l1 = 7 和 l2 = 9)。

是否有可以执行此操作的现有函数?如果没有,我将如何处理。

您可以编写一个简单的 argmax 函数(如给定的 in this answer):

def argmax(iterable):
    return max(enumerate(iterable), key=lambda x: x[1])[0]

并在成对总和上调用它:

argmax(map(sum, zip(l1, l2)))
# 2

关于实用程序的一些文档:

您确实需要更好地定义您 mean/expect 的“均最大化”概念。

例如,可以将值对视为笛卡尔平面中的 x,y 坐标,其中离原点的欧几里德距离最远表示最大化的概念:

l1 = [11,4,7,9]
l2 = [2,10,9,6]

i = max(range(len(l1)),key=lambda i:l1[i]**2+l2[i]**2)
print(i)
2

这会选择第 3 个索引,但在这种特殊情况下也会选择值的简单总和。