考虑两个列表:
a = [[1,2],[3,4]]
b = [[1,2],[3,4]]
我该如何编写 compare
函数以满足以下条件:
compare(a,b) => true
你需要这个吗:
>>> a = [[1,2],[3,4]]
>>> b = [[1,2],[3,4]]
>>> a == b
True
注意:==
在列表无序的情况下无用,例如(注意a
和b
中的顺序不同)。
注:当列表无序时, ==
不起作用,例如 (请注意 a
和 b
中的顺序)。
>>> a = [[3,4],[1,2]]
>>> b = [[1,2],[3,4]]
>>> a == b
False
参考这个问题以获取更多信息:如何在Python中比较一个列表的列表/集合?
编辑:感谢 @dr jimbob
如果你想在排序后进行比较,可以使用sorted(a)==sorted(b)
。
但是需要注意的是,如果 c = [[4,3], [2,1]]
,那么sorted(c) == sorted(a) == False
,因为sorted(c)
会得到不同的结果[[2,1],[4,3]]
(未进行深度排序)
要实现此功能,您需要使用链接答案中提到的技术。由于我也在学习Python :)
a.sort()
会就地对a
进行排序,然后返回None
。因此,a.sort() == None
将为True
,而您的a.sort()==b.sort()
评估为None == None
。尝试获得一个False
;例如,让b=[]
。(注意,使用“is”比较来检查None是更好的风格)。现在,sorted(a) == sorted(b)
将起作用。请注意,如果您有a = [[1,2],[3,4]]
,b = [[3,4],[1,2]]
和c = [[4,3],[2,1]]
,那么只有sorted(a)
和sorted(b)
将相等(都是[[1,2],[3,4]]
),而sorted(c)
则不同([[2,1],[4,3]]
)。 - dr jimbob简单:
def compare(a, b): return a == b
lambda
创建匿名函数:compare = lambda a, b: a == b
==
用于测试 Python 对象的相等性。对于两个普通列表的相等性测试也是一样的。 - Rushy Panchalnumpy
]: 逐元素比较两个numpy数组是否相等 - jpp