Python 列表:如何在列表中搜索另一个元素或重复项

1 投票
6 回答
663 浏览
提问于 2025-04-17 17:53

我有一个列表,比如说 p = [1,2,3,4,2]。有没有办法只用查找、索引、切片、len()等方法来判断这个列表里是否有重复的数字,如果有就返回布尔值 True,而不使用字典、元组等其他数据结构。

我用的代码是:

for e in p: 
   duplicate = p.find(e, e+1) 
   if duplicate in p: 
       return True

6 个回答

2
>>> p = [1, 2, 3, 4, 2]
>>> len(set(p)) == len(p)
False

你可以在这个链接找到关于集合(sets)更多的信息,另外也可以查看Python文档了解更多内容。

5

你也可以使用 list.count 这个方法:

def has_duplicates(p):
    for e in p:
        if p.count(e) > 1:
            return True
    return False
6

这里有一个简单的方法:

return len(p) != len(set(p))

还有一种效率较低的方法,它不使用 set

for i in range(len(p)):
   if p[i] in p[i+1:]:
      return True
return False

这种第二种方法虽然不太常见,但避免了语言中除了最基本特性以外的所有内容(包括元组)。

再给你介绍一种方法:

while p:
   e = p.pop()
   if e in p:
      return True
return False

这个方法很简单,但会修改原来的列表。

最后我将演示一种方法:

s = sorted(p)
for i in range(1, len(s)):
   if s[i] == s[i - 1]:
      return True
return False

这个方法是通过对 p 进行排序,然后比较每一对相邻的元素来实现的。

撰写回答