首页 > 解决方案 > 添加唯一整数

问题描述

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

标签: python

解决方案


拆分计数和求和步骤。对列表进行一次遍历以确定唯一元素,然后对它们进行求和。

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像 a 这样的常规行为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)

推荐阅读