如何在Python中比较两个列表和对象实例

7

假如我有:

list1 = [1,6]
list2 = [1]

如果列表数值匹配,我想要做一些事情!

比较它并在此之后执行相关操作。

3个回答

17
嗯,像这样吗?
if list1 == list2: # compare lists for equality
    doStuff()      # if lists are equal, do stuff after that   

当然,您需要澄清“如果列表值匹配”是什么意思。上面代码将检查两个列表是否具有相同的元素,并且这些元素在相同的位置上 - 也就是说,它们是相等的

编辑:

问题不太清楚,以下是一些可能的解释。要检查list1中的所有元素是否也在list2中,请执行以下操作:

if all(x in list2 for x in list1):
    doStuff()

如果想要对 list1 中与 list2 相同的每个元素执行某些操作,请使用以下方法:

for e in set(list1) & set(list2):
    doStuff(e)

3
不,这在Python中检查的是两个列表是否相等:元素相同且位置相同。而在Java中,这表示一个身份比较(identity comparison),但在Python中它是一种相等性比较(equality comparison)。 - Óscar López
实际上,我想要找出列表1中的每个元素是否存在于列表2中,如果存在,则对匹配项进行某些操作。 - user2481309
1
@user2481309 请在您的问题中添加一些示例。 - Markus Unterwaditzer
我想检查列表1中的每个元素是否在列表2中,如果是则执行某些操作。 - user2481309
那么就是这个:如果list1中的所有元素都在list2中,则返回True - Óscar López

1
使用any():
>>> L1 = [1,6]
>>> L2 = [1]
>>> any(i in L1 for i in L2)
True

基本上,它循环遍历L2中的每个项目,如果L2中的任何项目在L1中,则返回True
如果您想查看每个项目是否在另一个列表中,并打印哪些项目在列表中,哪些不在:
>>> for i in L2:
...     if i in L1:
...             print i, "is in L1"
...     else:
...             doStuff(i)

2
这将忽略列表的顺序。 - Markus Unterwaditzer
1
它会说[1,2,3][3,2,1]是相等的。 - Markus Unterwaditzer
1
这取决于 OP 的意图。我们不知道 OP 是想知道一个项是否在另一个列表中,还是两个列表是否具有相同的元素。 - TerryA
i是用来显示匹配元素的吗? - user2481309
@user2481309,抱歉,您能否重新表达一下您的句子? - TerryA
显示剩余7条评论

0

简单的方法,虽然不一定是最有效的(使用{{link1:all()}}而不是any()):

listsEqual = len(list1) == len(list2) and all(list1[i] == list2[i] for i in range(len(list1))

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接