Python列表:如何在列表中搜索其他元素或重复项目

Cod*_*own 1 python

我有一个列表说p = [1,2,3,4,2] 有没有任何方法可以返回bool值,True如果它只包含一个副本,只使用find,indexing,切片,len()等方法而不是dict,tuple等.

我用过这段代码:

for e in p: 
   duplicate = p.find(e, e+1) 
   if duplicate in p: 
       return True
Run Code Online (Sandbox Code Playgroud)

NPE*_*NPE 6

这是一个简单的方法:

return len(p) != len(set(p))
Run Code Online (Sandbox Code Playgroud)

一种不太有效的方法,不使用set:

for i in range(len(p)):
   if p[i] in p[i+1:]:
      return True
return False
Run Code Online (Sandbox Code Playgroud)

第二种方法不是非常惯用,但避免了语言的所有基本功能(包括元组).

这是另一种方式:

while p:
   e = p.pop()
   if e in p:
      return True
return False
Run Code Online (Sandbox Code Playgroud)

这很简单,但确实修改了列表.

我要演示的最后一种方法是:

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

这通过排序p然后比较每对连续元素来工作.


Cai*_*von 5

你也可以使用list.count:

def has_duplicates(p):
    for e in p:
        if p.count(e) > 1:
            return True
    return False
Run Code Online (Sandbox Code Playgroud)