7

说如果我有:

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

如果列表值匹配,我想做点什么!

比较它,然后做一些事情

4

3 回答 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或者要对也属于 in的每个元素做一些事情list2,请执行以下操作:

for e in set(list1) & set(list2):
    doStuff(e)
于 2013-06-21T13:42:42.343 回答
1

使用any()

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

几乎,它会遍历 in 中的每个项目,L2如果 L2 中的任何项目在 in L1,那么它将返回True

如果您想查看每个项目是否在另一个列表中,并打印哪些是哪些不是:

>>> for i in L2:
...     if i in L1:
...             print i, "is in L1"
...     else:
...             doStuff(i)
于 2013-06-21T13:42:38.590 回答
0

简单的方法,虽然不一定是最有效的(使用all()代替any()):

listsEqual = len(list1) == len(list2) and all(list1[i] == list2[i] for i in range(len(list1))
于 2013-06-21T13:52:11.517 回答