返回列表的最高值

时间:2021-06-01 06:17:03

标签: python list

您好,我有几个列表,我正在尝试分别创建一个新的最高值列表。例如,这些是列表:

list1 = 5, 1, 4, 3
list2 = 3, 4, 2, 1
list3 = 10, 2, 5, 4

这是我希望它返回的:

[10, 4, 5, 4]

我认为我可以做这样的事情:

largest = list(map(max(list1, list2, list3)))

但我收到一个错误,指出地图需要 1 个以上的参数。

我还以为我可以编写 if, elif 语句大于,但它似乎只执行第一个值并将该列表作为“更大的值”返回

感谢您的帮助

2 个答案:

答案 0 :(得分:8)

这是“zip splat”技巧:

>>> lists = [list1, list2, list3]
>>> [max(col) for col in zip(*lists)]
[10, 4, 5, 4]

你也可以使用 numpy 数组:

>>> import numpy as np
>>> np.array(lists).max(axis=0)
array([10,  4,  5,  4])

答案 1 :(得分:6)

您错误地使用了 map。用这个替换最后一行:

largest = list(map(max, zip(list1, list2, list3)))

map 中,第一个参数是要应用的函数,第二个参数是一个可迭代的,它将产生要应用该函数的元素。 zip 函数可让您一次迭代多个可迭代对象,返回相应元素的元组。这就是这段代码的工作原理!

相关问题