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:]]))
解决方案
拆分计数和求和步骤。对列表进行一次遍历以确定唯一元素,然后对它们进行求和。
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)
推荐阅读
- javascript - Javascript 中的循环链接列表同胞游戏
- protractor - 量角器代码中未调用断言
- spring - 如何在 IntelliJ 的 Spring Boot 项目中使用实时编辑
- mfc-feature-pack - CMFCTabCtrl 的活动选项卡关闭按钮
- database - 特定列的数据占用的空间以及对删除该列的影响
- java - 捕获 url 参数值并在 SPARQL 查询中使用它
- reactjs - React Native 可扩展视图问题
- ios - 删除单元格后更新标签
- python - 如何在 .*scm 文件中读取字节并将其更改为整数
- javascript - 如何从外部网络应用程序在 Magento 中为特定商店生成折扣券?