在python中逐个元素检查两个受尊重的列表

时间:2018-02-01 21:10:21

标签: python

如何检查两个列表中哪一个列表反转,并在每个位置提取最小值,例如:

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)

但这是错误的。

1 个答案:

答案 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

对于大型列表,我们可以通过使用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]