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



假设我有两个列表a=[1,2,3,4,5,6]b=[2,34,5,67,5,6],我想创建第三个列表,它将有1,其中元素在ab0中是不同的,当它们相同时,所以上面就像c=[1,1,1,1,0,0]

您可以压缩列表并在列表理解中进行比较。这利用了布尔值在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]

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

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

使用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]

如果您将有多个向量运算,并且它们应该很快。签出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])

idk如果这正是你想要的,但这应该有效:

edidt:刚刚发现Joe Thor比我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)

这可以通过使用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)]

列表理解代码来自这个线程:在Python 中比较两个列表中的值

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)

这应该适用于任何类型的两个列表。

tstlist = ["w","s","u"]
lstseasons = ["s","u","a","w"]
lstbool_Seasons = [1 if ele in tstlist else 0 for ele in lstseasons]

输出:lstbool_Seasons=[1,1,0,1]

这是我第一次发布任何内容,仍然在弄清楚这里的工作原理,所以请原谅我的失礼。。。

相关内容

  • 没有找到相关文章

最新更新