我正在寻找一种方法来测试一个元组是否具有所有不同的元素 - 可以说,它是一个集合,最终得到了这个快速而肮脏的解决方案。

def distinct ( tup):
    n=0
    for t in tup:
        for k in tup:
            #print t,k,n
            if (t == k ):
                n = n+1
    if ( n != len(tup)):
        return False
    else :
        return True


print distinct((1,3,2,10))

print distinct((3,3,4,2,7))

有什么思维错误吗?元组上有内置函数吗?

最佳答案

你可以很容易地做到这一点:

len(set(tup))==len(tup)
这将创建 settup 并检查它是否与原始 tup 的长度相同。它们具有相同长度的唯一情况是 tup 中的所有元素都是唯一的
例子
>>> a = (1,2,3)
>>> print len(set(a))==len(a)
True

>>> b = (1,2,2)
>>> print len(set(b))==len(b)
False

>>> c = (1,2,3,4,5,6,7,8,5)
>>> print len(set(c))==len(c)
False

关于python - 测试一个元组是否包含所有不同的元素,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22891726/

10-12 23:19