【问题标题】:How to parse a list of list of floats in python?如何解析python中的浮点列表列表?
【发布时间】:2013-11-23 21:13:43
【问题描述】:

我对 python 还很陌生,我有一个 C 程序,它可以输出一个像这样的浮点数列表:

f11
f12
...
f1n

f21
f22
...
f2m

.
.
.
fk1
...
fkl

我想将这些浮点数放入列表列表中:

[[f11,...], [f21, ...], ..., [fk1,...]]

我有一个解决方案(使用特定的浮点数作为分隔符),但它非常难看。输入的格式灵活...有简单的解决方案吗?

【问题讨论】:

  • 输入中的省略号和点实际上是您输入的内容,还是您将它们作为占位符包含在内?每个“组”浮点数之间是否总是有两个换行符?
  • 这是一个占位符(虽然我不确定它的含义):它是一个很长的浮点数列表,所以我只是表示该列表以“...”继续。正如我所说,我可以根据需要输出数据。我放了一个空行,但它可能是别的东西。
  • 他在问我们应该如何知道一个浮动子列表与下一个浮动子列表之间的界限。它们之间是否有空行,或者...
  • 似乎我并不清楚......但无论如何我有一个解决方案......我可能会删除这个问题并睡一会。感谢您的关注。 :-)

标签: python file map


【解决方案1】:

假设你的数字看起来像这样:

1.435235
3.23421
4.523421
42.3241

-1.2342
0.09901
134134.2

1.2342111
13.111
14.23521

...每组数字由两个换行符分隔,你可以有这样的东西:

def parse_group(group):
    return [float(n) for n in group.split('\n')]

def get_numbers(string, separator='\n\n'):
    groups = str.split(separator)
    return [parse_group(group) for group in groups]

在你的函数上调用 get_numbers 应该会产生类似的结果:

>>> print get_numbers(input)
[[1.435235, 3.23421, 4.523421, 42.3241], [-1.2342, 0.09901, 134134.2], [1.2342111, 13.111, 14.23521]]

这假定每个组由两个换行符(一个空行)分隔,但您可以相应地对其进行参数化。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-10-27
    • 1970-01-01
    • 1970-01-01
    • 2021-10-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多