【问题标题】:How do you convert a list of strings to a list of floats using Python?如何使用 Python 将字符串列表转换为浮点数列表?
【发布时间】:2018-08-14 14:52:35
【问题描述】:

如果我有一个字符串列表:

['   3.2 4.5 7.8 9.2 4.3 4.7 5.2',
'   3.1 4.1 1.3 8.2 4.1 3.2 3.1',
'   3.1 4.2 5.7 3.2 4.1 3.0 1.9']

如何将其转换为浮点数列表,以便我的结果如下所示:

[[3.2, 4.5, 7.8, 9.3, 4.3, 4.7, 5.2],
[3.1, 4.1, 1.3, 8.2, 4.1, 3.2, 3.1],
[3.1, 4.2, 5.7, 3.2, 4.1, 3.0, 1.9]]

【问题讨论】:

  • print( [list(map(float, i.strip().split())) for i in l] )
  • 这份名单是怎么来的?

标签: python python-2.7 pandas


【解决方案1】:

使用

l = ['   3.2 4.5 7.8 9.2 4.3 4.7 5.2',
'   3.1 4.1 1.3 8.2 4.1 3.2 3.1',
'   3.1 4.2 5.7 3.2 4.1 3.0 1.9']

print( [map(float, i.strip().split()) for i in l] )

输出:

[[3.2, 4.5, 7.8, 9.2, 4.3, 4.7, 5.2], [3.1, 4.1, 1.3, 8.2, 4.1, 3.2, 3.1], [3.1, 4.2, 5.7, 3.2, 4.1, 3.0, 1.9]]
  • str.split() 按空格分割元素
  • map(float, 'YOURLIST') 对所有元素应用浮点数。

【讨论】:

  • 你实际上并不需要list(...) wrap
  • @dheiberg for OP 你是正确的(Py2.7),但你在 Py3 中做 - map() 返回一个迭代器,很好记下。
  • @dheiberg.. 谢谢我没有看到 python2.7 标签。
【解决方案2】:

您可以使用以下代码:

numbers = ['   3.2 4.5 7.8 9.2 4.3 4.7 5.2',
'   3.1 4.1 1.3 8.2 4.1 3.2 3.1',
'   3.1 4.2 5.7 3.2 4.1 3.0 1.9']

print([[float(number) for number in number_list.split()] for number_list in numbers])

【讨论】:

  • 在对列表中的所有元素进行重复操作时使用map会更pythonic,例如float()
猜你喜欢
  • 2017-07-31
  • 2019-03-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-05-20
  • 1970-01-01
  • 2021-10-05
相关资源
最近更新 更多