Python:两个列表之间的成对比较:列出a> = list b?

C. *_*eng 1 python comparison list

如果我想检查列表中的所有元素是否存在

a: [1 2 3 6]

大于或等于另一个列表中的对应元素

b: [0 2 3 5]

如果a [i]> b [i]为所有,则返回true,否则为false.这有逻辑功能吗?比如a> b?谢谢

Hug*_*ell 6

你可以做到

all(x >= y for x,y in zip(a,b))
Run Code Online (Sandbox Code Playgroud)

它具有短路评估的优点:如果发现任何x < yFalse立即返回.


Pad*_*ham 5

如果你真的想在每一个元素比较ab你其实只需要检查针对maxb,因此将是一个0(n)解决方案短路,如果我们发现有任何元素小于B的最大值:

mx = max(b)
print(all(x >= mx for x in a))
Run Code Online (Sandbox Code Playgroud)

对于成对,您可以使用枚举:

print(all(x >= b[ind] for ind,x in enumerate(a)))
Run Code Online (Sandbox Code Playgroud)

或者使用 hughbothwell 的 zip 想法使用 itertools.zip:

from itertools import izip
print(all(x >= y for x,y  in izip(a,b)))
Run Code Online (Sandbox Code Playgroud)

或麻木:

print(np.greater_equal(a,b).all())

print(np.all(a >= b))
Run Code Online (Sandbox Code Playgroud)