对不带字符串值的python列表求和

2024-04-28 03:48:07 发布

您现在位置:Python中文网/ 问答频道 /正文

因此,根据duck typing advice,不建议您在python中检查类型,只需查看一个操作是成功还是失败。在这种情况下,如何对一系列(主要)数字求和,同时忽略字符串。你知道吗

sum([1,2,3,4,'']) #fails
sum(filter(lambda x: type(x)==int, [1,2,3,4,''])) #bad style

Tags: lambda字符串typing类型styletype情况数字
2条回答

我会这样做的

a = [1,2,3,4,'']
print sum(x if not isinstance(x,str) else 0 for x in a)

我在这里看到两个主要的解决方案:

  • 预处理:过滤输入数据以防止'missing data'的发生,可能相当复杂。如果没有更多的信息,我们在这一点上帮不了你。你知道吗
  • 后处理:过滤结果列表并删除'missing data',很简单,但它不是真正可伸缩的。你知道吗

关于后处理,这里有一个使用列表理解的解决方案,另一个使用基于filter的方法:

a = [1,2,3,4,'']
filtered_a = [x for x in t if isinstance(x, int)]
filtered_a = filter(lambda x: isinstance(x, int), a)

然后,你可以简单地做sum(filtered_a)

我们还可以说,您可以在处理过程中检查数据的一致性,只是不要在数组中添加字符串。你知道吗

相关问题 更多 >