Python 字符串的和包含一系列十进制数

Python 字符串的和包含一系列十进制数,python,python-2.7,Python,Python 2.7,我真的是个编程新手。我想打印字符串s='1.23,2.4,3.123'的和。 我试着用 total = 0.0 for s in '1.23,2.4,3.123': total += float(s) print total 但它不起作用,有人能帮忙吗? THX很多您可以尝试以下方法: total = sum(float(i) for i in s.split(',')) 它是这样运行的: s.split(',')提取字符串中的每个“数字” s中i的浮点(i).对每个分割值进行浮点

我真的是个编程新手。我想打印字符串s='1.23,2.4,3.123'的和。 我试着用

total = 0.0
for s in '1.23,2.4,3.123':
    total += float(s)
print total
但它不起作用,有人能帮忙吗?
THX很多

您可以尝试以下方法:

total = sum(float(i) for i in s.split(','))
它是这样运行的:

  • s.split(',')
    提取字符串中的每个“数字”

  • s中i的浮点(i).
    对每个分割值进行浮点运算

  • sum()
    将它们全部相加

希望这有帮助

我会这样做:

>>> str_list = '1.23,2.4,3.123'.split(',')
>>> float_list = [float(str_number) for str_number in str_list]
>>> total = sum(float_list)
>>> print total
sum(map(float, s.split(',')))

拆分字符串,然后将其转换为float。您到底希望发生什么?它如何知道您希望使用逗号拆分并将字符串的每一段解释为一个数字?计算机是哑的;你必须准确地告诉它你想做什么;)“我想你错过了一个类型转换…”琼克莱门茨说,“是的,在我尝试过之后才意识到这一点。谢谢:)
sum(ast.literal\u eval))
也可以;)请注意,无需将其设置为
列表
。作为生成器,它看起来更简单、更快:
sum(s.split(',')中i的float(i)
。我喜欢这样!将编辑以上列表的理解,或者更好的是,生成器表达式通常优于
映射
,这被一些Python知名人士认为是不推荐的。@ThijsvanDien在3.x中,这将是绝对好的-很容易被
imap
或来自未来的
替换…
如果需要…@JonClements我认为这是一个风格问题,而不是效率或诸如此类的问题。@ThijsvanDien里面没有什么,但是内置的
float
map
可以进入实现级别。。。因此,我们有潜力faster@ThijsvanDien错,
map
是许多人在小情况下的首选,在小情况下,您不会为它创建
lambda
。在这种情况下速度也更快。
sum(map(float, s.split(',')))