如何判断列表中是否存在重复整数?代码实现遇阻求解答
问题分析与解决
你的代码问题
你的代码逻辑完全偏离需求:
- 循环里每次取列表的一个元素
x,判断x == x——这对任何整数来说都是恒成立的,所以不管列表有没有重复,函数都会在遍历第一个元素时直接返回True,根本没检查不同元素之间是否重复。 - 后面的
elif x != x分支永远不会触发,整数不存在自身不等于自身的情况。
正确实现方式
方法1:利用集合去重(最简洁)
def has_duplicate(n): return len(n) != len(set(n))
原理:集合会自动剔除重复元素,如果原列表长度和集合长度不一致,说明存在重复整数。
方法2:遍历检查后续元素
def has_duplicate(n): for i in range(len(n)): # 检查当前元素在后面的子列表中是否存在 if n[i] in n[i+1:]: return True return False
原理:逐个遍历元素,检查它之后的元素里有没有重复项,找到就立即返回True,遍历完无重复则返回False。
方法3:用字典记录已出现元素(效率更高)
def has_duplicate(n): seen = {} for num in n: if num in seen: return True # 记录已见过的元素 seen[num] = True return False
原理:遍历过程中用字典存已经遇到的元素,遇到重复元素直接返回True,时间复杂度为O(n),适合处理长列表。
内容的提问来源于stack exchange,提问作者Adam Cora
相关产品推荐
相关产品推荐

