添加唯一的整数

时间:2018-06-02 12:58:59

标签: python

编写一个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:]]))

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)