Python列表查重函数未正常工作,请求排查问题原因
问题分析与解决方法
问题根源
你的函数逻辑存在致命问题:循环只执行了一次就直接终止。当遍历到第一个元素Thandi时,names.count(name)返回1,触发else分支直接返回N/A,函数结束,根本没机会检查后面的James等元素。
return语句的作用是立即终止函数并返回结果,所以你的循环还没开始真正检查重复项就结束了。
修正后的代码
调整逻辑,只有遍历完所有元素都没找到重复项时,才返回N/A:
names = ['Thandi', 'Lebo', 'Oratile', 'James', 'James', 'Thabo'] def find_duplicates(names): for name in names: if names.count(name) > 1: return name # 所有元素检查完毕后才返回N/A return 'N/A' print(find_duplicates(names)) # 输出 James
更高效的写法(推荐)
上面的写法每次调用count()都会遍历整个列表,时间复杂度是O(n²),对于大列表效率很低。可以用集合记录已遍历的元素,时间复杂度降到O(n):
def find_duplicates(names): seen = set() for name in names: if name in seen: return name seen.add(name) return 'N/A'
内容的提问来源于stack exchange,提问作者Onion Rings
相关产品推荐
相关产品推荐

