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

hsm*_*hsm 6 python list

假设我有 2 个列表:

L1 = [2,4,1,6]
L2 = [1,5,2,3]
Run Code Online (Sandbox Code Playgroud)

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

示例输出:

L3 = [2, 5, 2, 6]
Run Code Online (Sandbox Code Playgroud)

怎么做 ?

lej*_*lot 9

一种可能的解决方案是压缩您的列表,然后按元素应用最大操作,这可以通过调用函数在 python 中获得 map

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
Run Code Online (Sandbox Code Playgroud)

或者通过列表推导更 Pythonic

L3 = [max(l1, l2) for l1, l2 in zip(L1, L2)]
Run Code Online (Sandbox Code Playgroud)

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

L3 = [max(*l) for l in zip(L1, L2)]
Run Code Online (Sandbox Code Playgroud)


Eug*_*ash 6

您可以在列表理解中使用zip()and :max()

>>> L1 = [2,4,1,6]
>>> L2 = [1,5,2,3]
>>> [*map(max, zip(L1, L2))]
[2, 5, 2, 6]
Run Code Online (Sandbox Code Playgroud)

如果您可以使用numpy,那么使用 ufunc 就非常简单numpy.maximum()

>>> import numpy as np
>>> arr1 = np.array([2, 4, 1, 6])
>>> arr2 = np.array([1, 5, 2, 3])
>>> np.maximum(arr1, arr2)
array([2, 5, 2, 6])
Run Code Online (Sandbox Code Playgroud)