假设我想在 2 个列表中找到“大于”。
a = [1,2,3]
b = [0, 0.1, 4]
map( <something>, zip(a,b))
我尝试了操作员模块。它有一个 operator.gt() 方法。但是我找不到通过 zip 使用它的方法。有任何想法吗?编辑:如果其中任何一个为真,则输出只是一个真值。
谢谢
假设我想在 2 个列表中找到“大于”。
a = [1,2,3]
b = [0, 0.1, 4]
map( <something>, zip(a,b))
我尝试了操作员模块。它有一个 operator.gt() 方法。但是我找不到通过 zip 使用它的方法。有任何想法吗?编辑:如果其中任何一个为真,则输出只是一个真值。
谢谢
要仅将列表中的项目a
与 中的项目进行比较b
,您不必使用zip()
:
>>> a = [1, 2, 3]
>>> b = [0, 0.1, 4]
>>> map(operator.gt, a, b)
[True, True, False]
>>>
但另一方面,您还没有指定您期望的输出类型。
编辑:
为了有效地OR
得到结果,用any()
. 像这样:
>>> any(map(operator.gt, a,b))
True
a = [1,2,3]
b = [0, 0.1, 4]
map (max, zip(a,b))
Output: [1, 2, 4]
In [6]: a = [1,2,3]
In [7]: b = [0, 0.1, 4]
In [8]: [max(a_,b_) for a_,b_ in zip(a,b)]
Out[8]: [1, 2, 4]
或者,更简洁,
In [9]: map(max, zip(a,b))
Out[9]: [1, 2, 4]
如果您想要True/False
值列表(True
其中项目 ina
大于项目 in b
,False
否则),您可以使用itertools.starmap和operator.gt:
In [15]: import itertools as IT
In [17]: list(IT.starmap(operator.gt, zip(a,b)))
Out[17]: [True, True, False]
如果你不介意额外的依赖,numpy 是这类东西的理想选择。
import numpy as np
a = np.array([1,2,3])
b = np.array([0, 0.1, 4])
c = a > b