将字符串总和打印为浮点数

雷尼克斯

我正在做一个练习,指出:

假设它s是一个包含以逗号分隔的十进制数字序列的字符串,例如s = '1.23,2.4,3.123'编写一个程序,打印中的数字总和s

我的解决方案是:

s = '1.23,2.4,3.123'
news = s + ","
value = ""
floatValue = 0


for i in range(len(news)):
    if news[i] != ',':
        value += s[i]
    elif news[i] == ',':
        floatValue += float(value)
        value = ""

print floatValue

我只是想知道是否有更有效的方法来做到这一点?另外,我正处于Python课程的开始阶段,所以在这一点上,我仅尝试使用初学者级的解决方案来实现这一目标。

琼斯·哈珀

是的,重要的是:

>>> s = '1.23,2.4,3.123'
>>> sum(map(float, s.split(",")))
6.753

这用于str.split将字符串分成数字:

>>> s.split(",")
['1.23', '2.4', '3.123']

map适用float于每个字符串

>>> map(float, s.split(","))
[1.23, 2.4, 3.123]

sum把总数加起来


由于有几种方法略有不同的答案,因此我认为我将对其进行测试以查看哪种方法最有效:

2.7.6

>>> import timeit
>>> def f1(s):
    return sum(map(float, s.split(",")))

>>> def f2(s):
    return sum(float(x) for x in s.split(","))

>>> def f3(s):
    return sum([float(x) for x in s.split(",")])

>>> timeit.timeit("f1(s)", setup="from __main__ import f1, f2, f3;s='1.23,2.4,3.123'")
2.627161979675293
>>> timeit.timeit("f2(s)", setup="from __main__ import f1, f2, f3;s='1.23,2.4,3.123'")
2.805773973464966
>>> timeit.timeit("f3(s)", setup="from __main__ import f1, f2, f3;s='1.23,2.4,3.123'")
2.6547701358795166

3.4.0

>>> timeit.timeit("f1(s)", setup="from __main__ import f1, f2, f3;s='1.23,2.4,3.123'")
2.3012791969995305
>>> timeit.timeit("f2(s)", setup="from __main__ import f1, f2, f3;s='1.23,2.4,3.123'")
3.1761953750028624
>>> timeit.timeit("f3(s)", setup="from __main__ import f1, f2, f3;s='1.23,2.4,3.123'")
3.1163038839986257

Ashwini的奖励回合(3.4.0):

>>> from ast import literal_eval
>>> def f4(s):
    return sum(literal_eval(s))

>>> timeit.timeit("f4(s)", setup="from __main__ import f1, f2, f3, f4;s='1.23,2.4,3.123'")
23.054055102998973
>>> timeit.timeit("f1(s)", setup="from __main__ import f1, f2, f3, f4;s='1.23,2.4,3.123'")
2.2302689969983476

这用于(缓慢地!)ast.literal_eval用于将字符串解释为浮点数的元组:

>>> literal_eval('1.23,2.4,3.123')
(1.23, 2.4, 3.123)

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何将输入字符串打印为浮点数(1 到 1.0)python

来自分类Dev

将字符串解析为浮点数

来自分类Dev

如何将字符串编码的浮点数组解组为浮点数组?

来自分类Dev

为什么将字符串总和转换为浮点数

来自分类Dev

将长度为20的字符串转换为长度为20的浮点数

来自分类Dev

检查字符串是否为浮点数

来自分类Dev

phpunit和浮点数存储为字符串

来自分类Dev

如何使用函数样式将字符串解析为浮点数列表?

来自分类Dev

如何将四个浮点数压缩为字符串?

来自分类Dev

Python-将字符串解析为浮点数组?

来自分类Dev

将所有浮点数四舍五入为字符串

来自分类Dev

熊猫将字符串比率评估为浮点数

来自分类Dev

将字符串转换为数字(根据输入的变量为浮点数或整数)

来自分类Dev

如何将字符串解析为变量/函数/浮点数/整数赋值/值?

来自分类Dev

Bash将字符串解析为浮点数数组

来自分类Dev

将十六进制字符串中的负数解码为浮点数?

来自分类Dev

Python将字符串转换为浮点数

来自分类Dev

formatFloat:将浮点数转换为字符串

来自分类Dev

将字符串转换为浮点数

来自分类Dev

无法将字符串转换为浮点数

来自分类Dev

解析浮点数的字符串

来自分类Dev

从字符串创建浮点数

来自分类Dev

解析浮点数的字符串

来自分类Dev

将字符串转换为浮点数:将“ 8.9km”转换为浮点数

来自分类Dev

带有浮点数(纬度、经度)的字符串不能转换为浮点数 - 这显示为 0

来自分类Dev

将4D浮点数组从txt(字符串)文件转换为numpy浮点数组

来自分类Dev

如何在没有货币格式的情况下将字符串解析为浮点数?

来自分类Dev

AngularJS:如何将JSON字符串解析为整数或浮点数以在表单编号字段中显示

来自分类Dev

Python将字符串转换为浮点数会显示错误,显示数字为字母和数字的混合

Related 相关文章

  1. 1

    如何将输入字符串打印为浮点数(1 到 1.0)python

  2. 2

    将字符串解析为浮点数

  3. 3

    如何将字符串编码的浮点数组解组为浮点数组?

  4. 4

    为什么将字符串总和转换为浮点数

  5. 5

    将长度为20的字符串转换为长度为20的浮点数

  6. 6

    检查字符串是否为浮点数

  7. 7

    phpunit和浮点数存储为字符串

  8. 8

    如何使用函数样式将字符串解析为浮点数列表?

  9. 9

    如何将四个浮点数压缩为字符串?

  10. 10

    Python-将字符串解析为浮点数组?

  11. 11

    将所有浮点数四舍五入为字符串

  12. 12

    熊猫将字符串比率评估为浮点数

  13. 13

    将字符串转换为数字(根据输入的变量为浮点数或整数)

  14. 14

    如何将字符串解析为变量/函数/浮点数/整数赋值/值?

  15. 15

    Bash将字符串解析为浮点数数组

  16. 16

    将十六进制字符串中的负数解码为浮点数?

  17. 17

    Python将字符串转换为浮点数

  18. 18

    formatFloat:将浮点数转换为字符串

  19. 19

    将字符串转换为浮点数

  20. 20

    无法将字符串转换为浮点数

  21. 21

    解析浮点数的字符串

  22. 22

    从字符串创建浮点数

  23. 23

    解析浮点数的字符串

  24. 24

    将字符串转换为浮点数:将“ 8.9km”转换为浮点数

  25. 25

    带有浮点数(纬度、经度)的字符串不能转换为浮点数 - 这显示为 0

  26. 26

    将4D浮点数组从txt(字符串)文件转换为numpy浮点数组

  27. 27

    如何在没有货币格式的情况下将字符串解析为浮点数?

  28. 28

    AngularJS:如何将JSON字符串解析为整数或浮点数以在表单编号字段中显示

  29. 29

    Python将字符串转换为浮点数会显示错误,显示数字为字母和数字的混合

热门标签

归档