在Python中执行多个列表的逻辑或运算

时间:2018-09-28 21:45:10

标签: python-3.x logical-operators

我有一个包含一些子列表的列表。

list1=[ [True,False,True,False], [False,False,True,False],[True,False,True,True], .....]

我想在Python中执行逻辑或这些子列表,但是子列表的数量未知。对于两个列表,我可以做numpy.logical_or,但如何对多个子列表做呢?

2 个答案:

答案 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]

Try it out

答案 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]