我有一个包含一些子列表的列表。
list1=[ [True,False,True,False], [False,False,True,False],[True,False,True,True], .....]
我想在Python中执行逻辑或这些子列表,但是子列表的数量未知。对于两个列表,我可以做numpy.logical_or
,但如何对多个子列表做呢?
答案 0 :(得分:1)
zip
和列表理解可以工作,本质上是执行归约运算:
def or_list(l):
res = [False] * len(l[0])
return [[x or y for x, y in zip(e, res)] for e in l][-1]
list1 = [
[True,False,True,False],
[False,False,True,False],
[True,False,True,True]
]
print(or_list(list1))
输出:
[True, False, True, True]
答案 1 :(得分:1)
关注@ggorlen的答案
list1 = [
[True,False,True,False],
[False,False,True,False],
[True,False,True,True]
]
[any(l) for l in zip(*list1)]
输出
[True, False, True, True]