逐元素比较两个列表,使用OR操作

1 投票
3 回答
36 浏览
提问于 2025-04-14 18:24

我想用“或”的方式来比较两个长度相同的列表里的元素。

>>> [0,0,1,1,0] or [1,1,0,1,0]
[0, 0, 1, 1, 0]

我希望得到的结果是

[1,1,1,1,0]

我该怎么做才能实现这个比较呢?

3 个回答

0

在编程中,有时候我们需要处理一些数据,比如从一个地方获取数据,然后在另一个地方使用这些数据。这个过程就像是把水从一个水桶倒到另一个水桶里。

有些时候,我们会遇到一些问题,比如数据不太对劲,或者我们想要的数据没有被正确地传递。这就像是你在倒水的时候,水桶的底部有个洞,水就漏掉了。

为了避免这些问题,我们可以使用一些工具和方法来确保数据能够正确地传递和处理。就像在倒水之前,先检查水桶有没有漏水,确保水能够顺利到达目的地。

总之,处理数据就像是一个小实验,我们需要仔细观察,确保每一步都做对了,这样才能得到我们想要的结果。

l1 = [0,0,1,1,0]
l2 = [1,1,0,1,0]

l = [1 if l1[i] == 1 or l2[i] == 1 else 0 for i in range(len(l1))]
print(l) #Output : [1, 1, 1, 1, 0]

# without using one-liner
l = []
for i in range(len(l1)):
    if l1[i] == 1 or l2[i] == 1:
        l.append(1)
    else: l.append(0)
print(l)
1

使用numpy库:


import numpy as np

np.logical_or([0,0,1,1,0], [1,1,0,1,0]).astype(int)
array([1, 1, 1, 1, 0])

同时可以看看这个问题的答案:

Python布尔值列表比较时出现奇怪的结果

2

你可以使用 zip() 函数来同时遍历两个列表中对应的元素,然后用列表推导式对每一对元素进行 OR 操作。

list1 = [0, 0, 1, 1, 0]
list2 = [1, 1, 0, 1, 0]

result = [a or b for a, b in zip(list1, list2)]
print(result)

输出结果:

[1, 1, 1, 1, 0]

撰写回答