请求实现判断列表是否存在重复元素的布尔值返回函数
判断列表是否存在重复元素的解决方案
嘿,我来帮你搞定这个需求——写个函数接收列表输入,判断有没有重复元素,有就返回True,没有就返回False。这里给你两种实用的方法,完全适配你那种生成随机字符串列表的场景(当然其他可哈希类型的元素也能用):
方法一:利用集合去重特性(简洁高效)
集合的核心特性就是不允许重复元素,所以我们可以直接对比原列表和转成集合后的长度:
def has_duplicates(lst): # 如果原列表长度和集合长度不一致,说明存在重复 return len(lst) != len(set(lst))
这个方法一行代码就能实现,时间复杂度是O(n),大多数场景下都足够好用。把你示例里生成的字符串列表传进去,直接就能得到结果。
方法二:遍历+提前终止(更高效的提前检测)
如果列表里的重复元素出现得比较早,我们可以不用遍历整个列表,遇到重复就立刻返回结果,节省时间:
def has_duplicates(lst): seen = set() for item in lst: if item in seen: # 发现重复,直接返回True return True # 没见过的元素加入集合 seen.add(item) # 遍历完都没重复,返回False return False
这种方法的优势是在有重复的情况下可以提前结束遍历,比第一种方法在某些场景下更快。
注意事项
如果你的列表里包含不可哈希的元素(比如嵌套列表[1, [2,3], 1]),上面两种用集合的方法会报错,这时候可以换成遍历两两对比的方式,但这种情况在你的示例场景里应该不会遇到~
内容的提问来源于stack exchange,提问作者goran
相关产品推荐
相关产品推荐

