将空字符串转换为零

3
我正在做类似这样的事情,以总结从开始到结束的所有值。
big_list = line.split(delim)
sum( [int(float(item)) for item in big_list[start:end]] )

有时,big_list 中的某个元素可能为空,这种情况下转换会失败。是否可以通过一种优雅的方式使其支持空字符串,而不需要太多修改?

你想将浮点数的值截断为整数吗? - Padraic Cunningham
1个回答

6

假设空元素应该为零:

sum(int(float(item)) for item in big_list[start:end] if item)
                                                   # ^ skip over ""

请注意:
  1. sum函数可以接受生成器表达式作为参数,不需要构建列表;而且
  2. 空字符串""被视为False,因此这等同于if item != ""

1
我会选择这个... 为了完整起见:int(float(item or 0))是另一个选项(如果正在构建列表并且需要计算平均值,则可能更有用),但对于简单的“sum” - 过滤更有意义。 - Jon Clements

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接