迭代传入函数的列表时出现'int' object is not iterable错误求助
解决'int' object is not iterable错误及实现不重复数字求和
核心错误原因
你代码里的unique+=i和multiple+=i是问题根源:+=操作符给列表添加元素时,要求右侧是可迭代对象(比如列表、元组),但i是单个整数,不是可迭代的,所以抛出'int' object is not iterable错误。应该改用list.append(i)来添加单个元素。
其他需要修正的问题
- 函数名用了
sum,这是Python内置函数,会覆盖其原有功能,建议重命名为sum_unique这类不冲突的名字。 - 变量名
list是Python内置类型,不要用它做变量名,换成num_list更合适。
修正后的代码
def sum_unique(input_list): unique = [] total = 0 multiple = [] for i in input_list: found = False inMultiple = False inUnique = False for j in multiple: if i == j: found = True inMultiple = True for j in unique: if i == j: found = True inUnique = True if not found: unique.append(i) else: if inUnique: unique.remove(i) if not inMultiple: multiple.append(i) for num in unique: total += num return total num_list = [1,1,2,3] print(sum_unique(num_list)) # 输出5(2+3)
更简洁的实现方式
你的需求是对只出现一次的数字求和,其实可以用字典计数简化,不用嵌套循环:
def sum_unique(num_list): count = {} for num in num_list: count[num] = count.get(num, 0) + 1 # 只累加出现次数为1的数字 return sum(num for num, cnt in count.items() if cnt == 1) num_list = [1,1,2,3] print(sum_unique(num_list)) # 输出5
内容的提问来源于stack exchange,提问作者Kauriah Buckley
相关产品推荐
相关产品推荐

