在Python中,如何比较同一索引中的两个列表中的元素及其各自列表中的元素?

在Python中,如何比较同一索引中的两个列表中的元素及其各自列表中的元素?,python,list,zip,Python,List,Zip,假设我有两张清单 a = [1, 2, 3, 4, 7, 1] b = [1, 2, 4, 5, 7, 1] 在本例中,我希望它生成第三个列表,其中只包含每个列表中相同索引中相等的元素 c = [1, 2, 7, 1] 有一种简单的方法可以做到这一点吗?您可以查看列表并返回将返回布尔类型变量的测试: 您可以使用any快速检查是否存在False。如果您不需要以下值,则当两项不相同时,它将为False: any(i != j for i, j in zip(x_list, y_list)) 一

假设我有两张清单

a = [1, 2, 3, 4, 7, 1]
b = [1, 2, 4, 5, 7, 1]
在本例中,我希望它生成第三个列表,其中只包含每个列表中相同索引中相等的元素

c = [1, 2, 7, 1]
有一种简单的方法可以做到这一点吗?

您可以查看列表并返回将返回布尔类型变量的测试:

您可以使用any快速检查是否存在False。如果您不需要以下值,则当两项不相同时,它将为False:

any(i != j for i, j in zip(x_list, y_list))
一旦发现False,任何版本都将中断,这意味着您可能不必遍历整个列表,除非在最坏的情况下。

您可以遍历列表并返回将返回布尔类型变量的测试:

您可以使用any快速检查是否存在False。如果您不需要以下值,则当两项不相同时,它将为False:

any(i != j for i, j in zip(x_list, y_list))

一旦发现False,任何版本都将中断,这意味着您可能不必遍历整个列表,除非是在最坏的情况下。

如果两个列表长度相等,c=[val代表ind,如果b[ind]==val],枚举a中的val应该工作。

如果两个列表长度相等,c=[val代表ind,val代表枚举a中的val如果b[ind]==val]应该有用。

最简单的方法可能就是做一个列表理解:

c = [x for x,y in zip(a,b) if x == y]
出于不同的目的,出于兴趣……也可以这样做:

from itertools import compress
mask = [x==y for x,y in zip(a,b)]
c = list(compress(a,mask))
或者,如果numpy是适合较大列表的选项:

import numpy as np
a,b = np.array(a), np.array(b)
c = a[np.equal(a,b)].tolist()
各方面都给予:

[1, 2, 7, 1]

最简单的方法可能只是做一个列表理解:

c = [x for x,y in zip(a,b) if x == y]
出于不同的目的,出于兴趣……也可以这样做:

from itertools import compress
mask = [x==y for x,y in zip(a,b)]
c = list(compress(a,mask))
或者,如果numpy是适合较大列表的选项:

import numpy as np
a,b = np.array(a), np.array(b)
c = a[np.equal(a,b)].tolist()
各方面都给予:

[1, 2, 7, 1]

你有任何代码吗?只需压缩列表并比较:c=[x代表x,zipa中的y,b如果x==y]@MarkMeyer这很有效,非常感谢!你有任何代码吗?只需压缩列表并比较:c=[x代表x,zipa中的y,b如果x==y]@MarkMeyer这很有效,非常感谢!OP给出了一个返回值的例子:[1,2,7,1]你的代码返回布尔值。问题是我不想看到是否有相等的,我想看看它们的值OP给出了一个返回值的例子:[1,2,7,1]你的代码返回布尔值。问题是我不想看到是否有相等的,我想看看它们的值