我有一个这样的字符串“1 1 3 2 1 1 1 2 1 1 1 1 1 1 1,5 0,33 0,66 1 0,33 0,66 1 1 2 1 1 2 1 1 2 0,5 0,66 2 1 2 1 1 1 0 1“。
如何在python中相互添加元素?
我试过了:
list = []
for x in str.replace(' ', ''):
list.append(x)
sum = 0
for y in list:
sum = sum + double(x)
但我经常遇到错误。
答案 0 :(得分:7)
print sum(float(x.replace(',', '.')) for x in str.split(' '))
输出:
45.64
答案 1 :(得分:4)
“python-esque”的做法:
sum([float(num) for num in str.replace(',', '.').split(' ')])
通过用空格分割字符串来制作列表,然后将每个部分变成浮动并添加它们。
答案 2 :(得分:4)
让我们不要以民族为中心。 ','对于许多人来说是合法的小数点。不要替换它,使用语言环境模块适应它:
>>> s = "1 1 3 2 1 1 1 2 1 1 1 1 1 1 1 1,5 0,33 0,66 1 0,33 0,66 1 1 2 1 1 2 1 1 2 0,5 0,66 2 1 2 1 1 1 0 1"
>>> import locale
>>> locale.setlocale(0,"po")
'Polish_Poland.1250'
>>> sum(map(locale.atof, s.split()))
45.639999999999993
答案 3 :(得分:2)
编辑:如果大卫猜测是正确的,那么你需要小数:
>>> from math import fsum
>>> fsum(float(n) for n in input.replace(',', '.').split())
45.640000000000001
注意我正在使用math.fsum()
来保留浮点丢失。
答案 4 :(得分:2)
my_string = "1 1 3 2 1 1 1 2 1 1 1 1 1 1 1 1,5 "
"0,33 0,66 1 0,33 0,66 1 1 2 1 1 2 "
"1 1 2 0,5 0,66 2 1 2 1 1 1 0 1"
my_string = my_string.replace(',', '.')
value = sum([float(n) for n in my_string.split()])
答案 5 :(得分:1)
如果我理解你想要的东西,那就试试这个:
list = []
for x in str.replace(',', '.').split():
list.append(x)
sum = 0
for x in list:
sum = sum + float(x)
答案 6 :(得分:1)
好的,这很有效:
sum(float(n) for n in str.replace(',','.').split())