2

我想比较两个列表的值。

例如:

a = [1, 2, 3]
b = [1, 2, 3]

我需要检查是否a相同b。我怎么做?

4

3 回答 3

7
a == b

这是一个非常简单的测试,它检查所有值是否相等。

如果您想检查a和是否b都引用同一个列表,您可以使用is.

>>> a = [1, 2, 3]
>>> b = [1, 2, 3]
>>> a is b # a and b have the same values but refer to different lists in memory
False
>>> a = [1, 2, 3]
>>> b = a
>>> a is b # both refer to the same list
True
于 2012-07-14T06:33:06.600 回答
5

只需使用

a == b

运算符==将比较 a 和 b 的值,无论它们是否引用同一个对象。

于 2012-07-14T07:34:48.730 回答
-2

@jamylak 的答案是我会选择的。但是,如果您正在寻找“几种选择”,这里有一堆:

>>> a = [1,2,3]
>>> b = [1,2,3]
>>> a == b
True

或者

def check(a,b):
    if len(a) != len(b):
        return False
    for i in xrange(len(a)):
        if a[i] != b[i]:
            return False
    return True

或者

>>> len(a)==len(b) and all((a[i]==b[i] for i in xrange(len(a))))
True

或者

def check(a,b):
    if len(a) != len(b):
        return False
    for i,j in itertools.izip(a,b):
        if i != j:
            return False
    return True

或者

>>> all((i==j for i,j in itertools.izip(a,b)))
True

或(如果列表仅由数字组成)

>>> all((i is j for i,j in itertools.izip(a,b)))
True

或者

>>> all((i is j for i,j in itertools.izip(a,b)))
True

希望能满足你的胃口;]

于 2012-07-14T07:28:13.173 回答