测试元组是否具有相同内容
我需要实现一个叫做 cmpT
的函数,它应该返回以下结果:
>>> cmpT((1, 2), (1, 2))
True
>>> cmpT((1, 2), (2, 1))
True
>>> cmpT((1, 2), (1, 2, 1))
False
>>> cmpT((1, 2), ())
False
我的代码:
def cmpT(t1, t2):
if t1 == t2:
return True
else:
return False
但是它没有给出我想要的结果,像 cmpT((1, 2), (2, 1))
这样的调用并没有返回 True
。这是什么问题呢?
3 个回答
-4
如果你想比较两个集合的内容,你需要把元组转换成集合。
>>> a = set((1,2))
>>> b = set((2,1))
>>> a
set([1, 2])
>>> b
set([1, 2])
>>> a==b
True
也就是说:
def compT(t1, t2):
return set(t1) == set(t2)
-3
就像我在评论里说的:
def cmpT(t1, t2):
return len(t1) == len(t2) and set(t1) == set(t2)
我不知道对于大元组来说,这个方法是不是比排序更快……
16
你需要检查每个元素是否在两个列表中都出现,并且出现的次数要一样。最简单的办法就是对这两个列表进行排序。
def cmpT(t1, t2):
return sorted(t1) == sorted(t2)
可以看看这个链接: http://codepad.org/PH6LrAvU