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

时间:2011-08-31 14:27:42

标签: python

我必须实现一个函数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。怎么了?

4 个答案:

答案 0 :(得分:11)

你应该检查每个元素,如果它在两个列表中,并且相同的次数。最好的解决方案就是排序。

def cmpT(t1, t2): 
  return sorted(t1) == sorted(t2)

看看:http://codepad.org/PH6LrAvU

答案 1 :(得分:-3)

首先,您的代码可以替换为:

def cmpT(t1, t2):
    return t1 == t2

其次,我不知道它为什么不起作用。它对我也很好。

答案 2 :(得分:-3)

如果要比较两组的内容,则必须将元组转换为集合。

>>> 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 :(得分:-3)

喜欢我的评论:

def cmpT(t1, t2):
    return len(t1) == len(t2) and set(t1) == set(t2)

我不知道它是否比排序大元组更快......