2024-04-18 06:37:37 发布
网友
我需要检查两个一维列表中所有项目的条件
例如:
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)。我还需要打印列表1(L)中不满足该条件的项?你知道吗
if(L[i] > (float(B[i]*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)]
不确定这是你想要的,但这是一件很酷的事
>>> 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)
如果我没听错的话,可以用生成器表达式和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)]
为了打印匹配的对象,可以使用
这给你一个发电机,你可以使用你想要的。例如:
但您也可以直接生成一个匹配迭代器:
然后打印出来,或者检查一下是否有空。你知道吗
根据您要执行的操作,可以将生成器表达式更改为列表表达式:
不确定这是你想要的,但这是一件很酷的事
如果我没听错的话,可以用生成器表达式和zip函数来实现
或者,正如Ashwini Chaudhary在评论中所建议的那样,将值解包:
要从列表L中获取不符合条件的项,请执行以下操作:
相关问题 更多 >
编程相关推荐