我必须实现一个函数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
。怎么了?
答案 0 :(得分:11)
你应该检查每个元素,如果它在两个列表中,并且相同的次数。最好的解决方案就是排序。
def cmpT(t1, t2):
return sorted(t1) == sorted(t2)
答案 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)
我不知道它是否比排序大元组更快......