Python 列表:如何在列表中搜索另一个元素或重复项
我有一个列表,比如说 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 个回答
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
进行排序,然后比较每一对相邻的元素来实现的。