Python从字符串中添加元素

时间:2010-05-26 00:14:53

标签: python string list replace

我有一个这样的字符串“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)

但我经常遇到错误。

7 个答案:

答案 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())