因此,根据duck-typing建议,不建议您检查python中的类型,而只是查看操作是成功还是失败。在这种情况下,如何将(主要)数字列表相加,同时省略字符串。
sum([1,2,3,4,'']) #fails
sum(filter(lambda x: type(x)==int, [1,2,3,4,''])) #bad style
答案 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)