如何解决比较两个列表并制作新列表
假设我有两个列表 a=[1,2,3,4,5,6]
和 b=[2,34,67,6]
我想创建第三个列表,其中包含 1
,其中 a
和 {{1} 中的元素不同}} 和 b
当它们相同时,所以上面会像 0
解决方法
您可以压缩列表并在列表理解中比较它们。这利用了布尔值等价于 python 中的 1 和 0 的事实:
a=[1,2,3,4,5,6]
b=[2,34,67,6]
[int(m!=n) for m,n,in zip(a,b)]
# [1,1,0]
,
尝试使用 zip
对列表中每对项目的元素进行列表理解:
[ 0 if i == j else 1 for i,j in zip(a,b) ]
,
使用 for 循环进行迭代是一种选择,但列表理解可能更有效。
a=[1,6]
c=[]
for i in range(len(a)):
if a[i] == b[i]:
c.append(0)
else:
c.append(1)
print(c)
印刷品
[1,0]
,
如果您将有多个向量操作并且它们应该很快。结帐numpy
。
import numpy as np
a=[1,6]
a = np.array(a)
b = np.array(b)
c = (a != b).astype(int)
# array([1,0])
,
idk 如果这正是您正在寻找的,但这应该有效:
edidt:刚刚发现乔·托尔比我早几分钟发表了几乎完全相同的评论 lmao
a = [1,6]
b = [2,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,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,6]
c = []
if len(a) == len(b):
c = [int(i != j) for i,b)]
列表理解代码来自这个线程:Comparing values in two lists in Python
,a = [1,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)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。