Skip to main content
 首页 » 编程设计

python之检查元组中的两个元素是否具有相同的值

2025年05月04日20birdshome

我有一个包含 100 个字符串值的元组(比方说)。现在,我想检查元组中的两个字符串元素是否相同?

我试着用嵌套循环做这样的事情:

def hasDuplicates(arr: tuple): 
    ctr = 0 
    # arr looks something like this & len(arr) == 100 
    # arr = ('abc', 'bcd', 'sdf', 'abc', 'pqr', ...) 
    for m in arr: 
        for n in arr: 
            if n == m: 
                ctr += 1 
    # while looping, len(arr) times every element  
    # will be compared with itself 
    if ctr > len(arr): 
        return True 
    return False 
 

...这行得通,但我认为有更好的解决方法。谁能为此提供更好的解决方案? :)

请您参考如下方法:

如果我没理解错的话,你可以将你的元组转换成一个集合并检查它是否与原始元组具有相同的长度。

def has_duplicates(iterable): 
    l = list(iterable) # in case iterable is an iterator 
    return len(set(l)) != len(l) 

演示:

>>> tup = ('abc', 'bcd', 'sdf', 'abc', 'pqr') 
>>> has_duplicates(tup) 
>>> True 
>>> has_duplicates(range(100)) 
>>> False 

不适用于无限迭代器:)

~编辑~

一个更通用的版本,它不必预先构建一个可能很长的list 和set:

def has_duplicates(iterable): 
    seen = set() 
    for x in iterable: 
        if x in seen: 
            return True 
        seen.add(x) 
    return False 

当然,这两个版本都要求您的可迭代对象的元素是可哈希的。