Python整数列表重复检测程序出现AttributeError错误求助
问题分析与修复
错误原因
- 输入未存入列表:你定义了空列表
emp,但循环获取输入时,没有把每个输入的整数e添加到emp列表中,导致后续无法对列表进行重复检测。 - 错误操作整数而非列表:检测逻辑里的
e是最后一个输入的整数,不是列表。int类型没有count()方法,所以调用e.count(item)会触发AttributeError;同时range(e)也是错误的,你应该遍历目标列表,而非最后一个元素的数值范围。 - 检测逻辑混乱:原代码既未定义
item变量,也没有正确遍历列表元素进行重复判断,逻辑完全不成立。
修正后的完整代码
emp = [] listLen = int(input("Enter list length: ")) num = 1 # 获取输入并存入列表 for i in range(listLen): e = int(input("Enter element %d: " % num)) emp.append(e) # 关键步骤:将输入元素添加到列表中 num += 1 # 高效检测重复:利用集合自动去重的特性 if len(emp) != len(set(emp)): print("Has duplicate?: True") else: print("Has duplicate?: False")
代码说明
- 输入存储:添加
emp.append(e)把每个输入的整数存入列表,确保后续能对完整列表进行操作。 - 重复检测:
- 集合(
set)会自动剔除重复元素,通过对比原列表和集合的长度,就能快速判断是否存在重复:长度不等则有重复,反之则无。 - 如果你偏好遍历统计的方式,也可以用以下代码:
注意:这种遍历统计的方法时间复杂度更高,列表元素较多时,集合方法的效率优势更明显。has_duplicate = False for item in emp: if emp.count(item) > 1: has_duplicate = True break print("Has duplicate?:", has_duplicate)
- 集合(
示例运行
Enter list length: 3 Enter element 1: 100 Enter element 2: 2312 Enter element 3: 12312312 Has duplicate?: False
Enter list length: 4 Enter element 1: 5 Enter element 2: 3 Enter element 3: 5 Enter element 4: 7 Has duplicate?: True
内容的提问来源于stack exchange,提问作者Ganyu
相关产品推荐
相关产品推荐

