如何检查两个列表中哪一个列表反转,并在每个位置提取最小值,例如:
list1 = [3,4,5,2,1,7,4,1]
list2 = [1,4,7,1,2,5,4,3]
Output = [1,4,5,1,1,5,4,1]
这是我的代码:
min(list1, list2)
但这是错误的。
答案 0 :(得分:5)
您需要在min
作为函数的列表上执行映射,例如:
>>> list(map(min, list1, list2))
[1, 4, 5, 1, 1, 5, 4, 1]
zip
或使用zip
和列表理解的等效方法:
>>> [min(t) for t in zip(list1, list2)]
[1, 4, 5, 1, 1, 5, 4, 1]
对于大型列表,我们可以通过使用numpy来提升性能并处理数组。例如:
>>> import numpy as np
>>> np.min((list1, list2), axis=0)
array([1, 4, 5, 1, 1, 5, 4, 1])
如果结果必须再次成为香草列表,我们可以将结果传回列表:
>>> list(np.min((list1, list2), axis=0))
[1, 4, 5, 1, 1, 5, 4, 1]