查找两个列表的索引明智的最大值

时间:2016-02-06 18:30:21

标签: python list

假设我有2个名单:

L1 = [2,4,1,6]
L2 = [1,5,2,3]

输出应该是一个新列表,其中包含L1或L2中根据其位置找到的最大数字。

示例输出:

L3 = [2, 5, 2, 6]

怎么做?

4 个答案:

答案 0 :(得分:4)

其中一个可能的解决方案是压缩列表,然后应用max操作元素,这可以通过调用函数map

在python中获得
L1 = [2,4,1,6]
L2 = [1,5,2,3]
L3 = map(max, zip(L1, L2)) # python2
L3 = list(map(max, zip(L1, L2))) # python3
通过列表理解

或更多pythonic

L3 = [max(l1, l2) for l1, l2 in zip(L1, L2)]

或使用解包操作的较短版本

L3 = [max(*l) for l in zip(L1, L2)]

答案 1 :(得分:1)

这是一个快速解决方案,在一组迭代中!

list_a = [2,4,1,6]
list_b = [1,5,2,3]

max_list = [value if list_b[index]<value else list_b[index] for index, value in enumerate(list_a)]

print(max_list)

显示:[2, 5, 2, 6]

答案 2 :(得分:0)

如果可以使用numpy,则使用numpy.maximum() ufunc非常简单:

In [1]: import numpy as np

In [2]: arr1 = np.array([2, 4, 1, 6])

In [3]: arr2 = np.array([1, 5, 2, 3])

In [4]: np.maximum(arr1, arr2)
Out[4]: array([2, 5, 2, 6])

答案 3 :(得分:0)

使用列表理解

l=[1,2,7]
m=[4,5,6]

max=[(l[i] if l[i]>m[i]  else m[i] ) for i in range(0,len(l))]
print(max)