[英]to check a condition for all the items in two list in python
我需要检查两个一维列表中所有项目的条件
例如:
L = [12,23,56,123,13,15]
B = [45,89,12,45,19,89]
对于上面两个列表,我如何检查条件if(L[i] > (float(B[i]*1.1)))
其中'i'是索引从索引0开始到的所有项目列表(在这种情况下索引是0到5)。我还需要打印不符合条件的list1(L)的项目?
如果我理解你,你可以使用生成器表达和zip功能
L = [12,23,56,123,13,15]
B = [45,89,12,45,19,89]
all(x[0] > (x[1]*1.1) for x in zip(L, B))
或者,正如Ashwini Chaudhary在评论中建议的那样,价值观拆包:
L = [12,23,56,123,13,15]
B = [45,89,12,45,19,89]
all(l > (b * 1.1) for l, b in zip(L, B))
要从列表L中获取未通过条件的项目:
[l for l, b in zip(L, B) if l <= (b * 1.1)]
不确定这是你想要的,但它是一个很酷的numpy东西
>>> L = numpy.array(L)
>>> B = numpy.array(B)
>>> B < L
array([False, False, True, True, False, False], dtype=bool)
>>> L[L > B* 1.1]
array([ 56, 123])
>>> all(L > B*1.1)
为了打印匹配的,你可以使用
matching = (l > float(b * 1.1) for l, b in zip(L, B))
这为您提供了一个可以根据需要使用的生成器。 例如:
for m, l in zip(matching, L):
if m:
print l
但你也可以直接生成匹配的迭代器:
matching = (l for l, b in zip(L, B) if l > float(b * 1.1))
然后打印它们或只是检查空虚。
根据您要执行的操作,可能适合将生成器表达式更改为列表解析:
matching = [l for l, b in zip(L, B) if l > float(b * 1.1)]
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.