如何在Python中比较2D列表的相等性?

如何在Python中比较2D列表的相等性?,python,arrays,list,Python,Arrays,List,给出两个列表: a = [[1,2],[3,4]] b = [[1,2],[3,4]] 如何编写比较,以便: compare(a,b) => true 简单: def compare(a, b): return a == b 另一种方法是使用lambda创建匿名函数: compare = lambda a, b: a == b 你想要这个吗: >>> a = [[1,2],[3,4]] >>> b = [[1,2],[3,4]] >>

给出两个列表:

a = [[1,2],[3,4]]
b = [[1,2],[3,4]]
如何编写
比较
,以便:

compare(a,b) => true
简单:

def compare(a, b): return a == b
另一种方法是使用
lambda
创建匿名函数:

compare = lambda a, b: a == b
你想要这个吗:

>>> a = [[1,2],[3,4]]
>>> b = [[1,2],[3,4]]
>>> a == b
True
注意:
==
在列表无序时不有用,例如(注意
a
b
中的顺序)

请参阅此问题以获取进一步参考:

编辑:感谢@dr jimbob

如果要在排序后进行比较,可以使用
sorted(a)==sorted(b)

但是再一次强调一点,如果
c=[[4,3],[2,1]]
那么
sorted(c)==sorted(a)==False
,因为
sorted(c)
是不同的
[[2,1],[4,3]]
(非深度排序)


为此,您必须使用链接答案中的技巧。因为我也在学习Python:)

。。
a==b
不符合你的目的吗?不一定。例如,如果列表中的元素是字符串(您需要大小写不敏感),或者是浮点,并且您需要数字错误的容差,那么
==
将不起作用。取决于您预期的类型。@sdadas在提问之前,请尝试以下几件事:)列表是Python对象<代码>=
测试Python对象的相等性。如果测试两个正常列表的相等性也是一样的。。。。也许我是少数,但我很高兴总是有一个完全愚蠢的问题,所以当我自己遇到一个愚蠢的问题时。@yzn pku这很好,因为我已经产生了多年。最后一部分是不对的
a.sort()
a
排序到位,然后返回
None
。因此
a.sort()==None
将为
True
,而您的
a.sort()==b.sort()
计算结果为
None==None
。尝试获取一个
False
;e、 例如,让
b=[]
。(注意,当检查无时,使用
的更好样式是
比较)。现在,
sorted(a)==sorted(b)
将起作用。如果你有
a=[[1,2],[3,4]]
b=[[3,4],[1,2]]
c=[[4,3],[2,1]]]
,那么只有
排序的(a)
排序的(b)
是相等的(两者都是
[[1,2],[3,4]
),而
排序的(c)
是不同的(
)。
>>> a = [[3,4],[1,2]]
>>> b = [[1,2],[3,4]]
>>> a == b
False