如何在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