说我想在2个列表中找到“大于”。
a = [1,2,3]
b = [0, 0.1, 4]
map( <something>, zip(a,b))
我试过操作员模块。它有一个operator.gt()方法。但我无法找到一种方法来使用它与zip。有任何想法吗?编辑:如果其中任何一个为True,则输出只是一个True值。
感谢
答案 0 :(得分:8)
要将列表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
答案 1 :(得分:2)
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]
或者,pithier,
In [9]: map(max, zip(a,b))
Out[9]: [1, 2, 4]
如果您需要True/False
值列表True
,其中a
中的项目大于b
中的项目,False
则为In [15]: import itertools as IT
In [17]: list(IT.starmap(operator.gt, zip(a,b)))
Out[17]: [True, True, False]
,您可以itertools.starmap使用operator.gt:
{{1}}
答案 2 :(得分:2)
a = [1,2,3]
b = [0, 0.1, 4]
map (max, zip(a,b))
Output: [1, 2, 4]
答案 3 :(得分:1)
import numpy as np
a = np.array([1,2,3])
b = np.array([0, 0.1, 4])
c = a > b