一行中的 Python 2d 列表生成器

标签 python generator

我在一个文件中有一个数字矩阵(用于解决 TSP 的城市之间的距离)。我把它加载到一个列表中。之后我列表中的每一行看起来像这样:

' 9999    3    5   48   48    8    8    5    5    3    3    0    3    5    8    8    5\n'

每行中数字之间的空格数可能不同。现在我只想将它转换为整数/ float 列表。我用一个循环得到了它:

matrix = []
for row in lines[begin:end]:
    matrix.append([float(x) for x in row.split()])

它工作得很好。我只是好奇我是否可以在这里使用生成器(就像我在循环中使用它一样),但不是在循环中,而是在一行中。我尝试了类似[float(x) for x in [y.split() for y in lines[begin:end]]],但它说:

float() argument must be a string or a number, not 'list'

那么它可以像一行一样解决吗,还是应该让它循环?

最佳答案

您可以使用以下列表理解

matrix = [[float(i) for i in row.split()] for row in lines]

但对于这种特殊情况,使用 numpy.genfromtxt 会快得多

import numpy as np
matrix = np.genfromtxt('your_file', delimeter=' ')

关于一行中的 Python 2d 列表生成器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47080479/

相关文章:

javascript - redux-saga:函数被调用两次

java - 如何获取 hibernate 内部属性?

python - 通过 ModelForm 更新模型实例 : 'unicode' object has no attribute '_meta'

python - 设置 Python 类属性的正确方法

python 在将列表传递给方法时使用惰性赋值

javascript - 为什么这个 javascript 函数生成器不起作用?

python - 未实现错误 : `fit_generator` is not yet enabled for unbuilt Model subclasses

python - 删除不需要的字符并编辑 Pandas 中的列名

python - 一开始定义了一个全局函数,但需要的变量还没有定义

python - 带有自定义用户模型注册的 django-registration-redux NotImplementedError