测试元组是否具有相同内容

3 投票
3 回答
25381 浏览
提问于 2025-04-17 00:55

我需要实现一个叫做 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

撰写回答