[英]return highest value of lists
您好,我有几个列表,我正在尝试分别创建一个新的最高值列表。 例如,这些是列表:
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)))
但我得到一个错误,即 map 需要超过 1 个参数。
我还以为我可以编写 if, elif 语句来表示大于但它似乎只执行第一个值并将该列表作为“更大的值”返回
谢谢你的帮助
这是“zip splat”技巧:
>>> lists = [list1, list2, list3]
>>> [max(col) for col in zip(*lists)]
[10, 4, 5, 4]
您也可以使用 numpy arrays:
>>> import numpy as np
>>> np.array(lists).max(axis=0)
array([10, 4, 5, 4])
您错误地使用map
。 将最后一行替换为:
largest = list(map(max, zip(list1, list2, list3)))
在map
中,第一个参数是要应用的 function,第二个参数是一个可迭代的,它将产生应用 function 的元素。 zip
function 允许您一次迭代多个可迭代对象,返回相应元素的元组。 这就是这段代码的工作原理!
使用map
的可迭代S参数对可迭代对象具有隐式的zip
类效果。
map(max, *(list1, list2, list3))
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.