我有一个列表说 p = [1,2,3,4,2] 如果 bool 值包含仅使用查找、索引、切片、len() 等方法而不是字典、元组等的重复项,是否有返回 bool 值 True 的方法。
我使用了这段代码:
for e in p:
duplicate = p.find(e, e+1)
if duplicate in p:
return True
请您参考如下方法:
这里是简单的方法:
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 进行排序然后比较每对连续元素来实现。
