编写一个Python程序,读取一个整数,该整数给出要读取的整数,然后将这些整数(每行一个)读入一个列表。打印这些整数的总和,但如果一个整数出现多次,则不会计算。
您不能使用列表的计数方法。例如,输入:
•5 1 2 3 4 5会给15;
•5 1 2 3 4 2会给8;
•5 1 2 1 4 2会给4;和
•5 2 2 2 2 2将给出0。
我的代码有效,但有点难以阅读,反正如此简单,没有进口?
xs = [int(input()) for i in range(int(input()))]
print(sum([xs[i] for i in range(len(xs)) \ if xs[i] not in xs[:i] + xs[i + 1:]]))
答案 0 :(得分:1)
拆分计数和求和步骤。做一个遍历列表以确定唯一元素,然后另一个对它们求和。
from collections import Counter
def sum_unique(inputs):
counts = Counter(inputs)
return sum(num for num, count in counts.items() if count == 1)
xs = [int(input()) for i in range(int(input()))]
print(sum_unique(xs))
编辑:对不起,我没有看到“没有导入”。你可以像dict
一样定期进行Counter
行为,但这并不是很漂亮。
def sum_unique(inputs):
counts = {}
for x in inputs:
counts[x] = counts.get(x, 0) + 1
return sum(num for num, count in counts.items() if count == 1)