求和没有字符串值的python列表

时间:2015-10-12 08:53:39

标签: python

因此,根据duck-typing建议,不建议您检查python中的类型,而只是查看操作是成功还是失败。在这种情况下,如何将(主要)数字列表相加,同时省略字符串。

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

2 个答案:

答案 0 :(得分:2)

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

  • 预处理:过滤输入数据以防止'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)

即可

我们还可以争辩说,您可以在处理过程中检查数据的一致性,并且不要在数组中添加字符串。

答案 1 :(得分:2)

我会做这样的事情

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