比较两个列表并制作新列表

时间:2021-05-18 18:37:51

标签: python list compare

假设我有两个列表 a=[1,2,3,4,5,6]b=[2,34,5,67,5,6] 我想创建第三个列表,其中包含 1,其中 a 和 {{1} 中的元素不同}} 和 b 当它们相同时,所以上面会像 0

7 个答案:

答案 0 :(得分:3)

您可以压缩列表并在列表理解中比较它们。这利用了布尔值等价于 python 中的 1 和 0 的事实:

a=[1,2,3,4,5,6]
b=[2,34,5,67,5,6] 

[int(m!=n) for m, n, in zip(a, b)]
# [1, 1, 1, 1, 0, 0]

答案 1 :(得分:0)

尝试使用 zip 对列表中每对项目的元素进行列表理解:

[ 0 if i == j else 1 for i,j in zip(a,b) ]

答案 2 :(得分:0)

使用 for 循环进行迭代是一种选择,但列表理解可能更有效。

a=[1,2,3,4,5,6]
b=[2,34,5,67,5,6]
c=[]
for i in range(len(a)):
    if a[i] == b[i]:
        c.append(0)
    else:
        c.append(1)
print(c)

印刷品

[1, 1, 1, 1, 0, 0]

答案 3 :(得分:0)

如果您将有多个向量操作并且它们应该很快。结帐numpy

import numpy as np
a=[1,2,3,4,5,6]
b=[2,34,5,67,5,6]
a = np.array(a)
b = np.array(b)
c = (a != b).astype(int)
# array([1, 1, 1, 1, 0, 0])

答案 4 :(得分:0)

idk 如果这正是您正在寻找的,但这应该有效:

edidt:刚刚发现乔·托尔比我早几分钟发表了几乎完全相同的评论 lmao

a = [1, 2, 3, 4, 5, 6]
b = [2, 34, 5, 67, 5, 6]
results = []

for f in range(0, len(a)):
    if a[f] == b[f]:
        results.append(0)
    else:
        results.append(1)

print(results)

答案 5 :(得分:0)

这可以很简单地使用 for 循环来完成。它确实假设两个列表 a 和 b 的长度相同。示例代码如下所示:

a = [1,2,3,4,5,6]
b = [2,34,5,67,5,6]
c = []
if len(a) == len(b):
   for i in range(0,len(a)):
       if(a[i] != b[i]):
         c.append(1)
       else:
         c.append(0)

这也可以使用列表理解来完成:

a = [1,2,3,4,5,6]
b = [2,34,5,67,5,6]
c = []
if len(a) == len(b):
    c = [int(i != j) for i,j in zip(a,b)]

列表理解代码来自这个线程:Comparing values in two lists in Python

答案 6 :(得分:0)

a = [1, 2, 3, 4, 5, 6]
b = [2, 34, 5, 67, 5,6]
c = []

index = 0
x = 1
y = 0
for i in range(len(a)):    # iterating loop from index 0 till the last 
    if a[index]!= b[index]:    # comapring each index 
            c.append(x)         # if not equal append c with '1'
            index += 1           # increment index to move to next index in both lists
    else:
            c.append(y)
            index += 1

print(c)