python - 多个矩阵的输入文件

标签 python list file matrix readline

我知道有相关的线程,但我进行了搜索,但没有一个可以帮助我解决我的问题。

我有一个带有方阵的输入文本文件,如下所示:

1 2 3
4 5 6
7 8 9
*
10 11 12 13 14
15 16 17 18 19
20 21 22 23 24
25 26 27 28 29
30 31 32 33 34

现在后面可能有更多矩阵,所有矩阵之间都带有 *

我想分离矩阵(不使用numpy!),然后使用列表中的列表来处理它们(我猜列表理解可能很有用),所有条目都是整数。第一个矩阵将如下所示 [[1,2,3],[4,5,6],[7,8,9]],第二个矩阵将是 [ [10,11,12,13,14],[15,16,17,18,19],[20,21,22,23,24],[25,26,27,28,29],[31 ,31,32,33,34]] 等等。

我的计划是将矩阵分开在它们自己的列表条目中,然后(利用矩阵是方阵的事实,因此可以很容易地确定一个列表条目应包含多少个整数)使用一些列表理解来更改字符串转换为整数。但我一开始就陷入困境。

matrix = open('input.txt','r').read()
matrix = matrix.replace('\n',' ')
list = matrix.split('* ')

现在,如果我打印列表,我会得到['1 2 3 4 5 6 7 8 9', '10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34']

问题是我现在陷入了两个字符串而不是整数列表的困境。

有什么建议吗?

最佳答案

mat_list = [[[int(num_str) for num_str in line.split()] for line in inner_mat.split('\n')] for inner_mat in open('input_mat.txt','r').read().split('\n*\n')]

[[[1, 2, 3], [4, 5, 6], [7, 8, 9]], [[10, 11, 12, 13, 14], [15, 16, 17, 18, 19], [20, 21, 22, 23, 24], [25, 26, 27, 28, 29], [30, 31, 32, 33, 34]]]

关于python - 多个矩阵的输入文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54281938/

相关文章:

python - 无法删除由 `tempfile.mkstemp()` 在 Windows 上创建的文件

python - Django queryset - 从 json 对象转换

python - 在私有(private)服务器上从 zip 文件进行 Pip 安装未安装要求,并且当满足要求时找不到软件包

python - 通过平均减少列表的优雅方式?

python - 在哪里可以找到 Keras 配置文件?

c# - 比较列表中的第一项和第二项

c++ - 使用 STL 类的 typdef,如 map 、列表等

javascript - 使用 javascript 下载项目内的文件

c - 如何比较 nlink_t 和 int

c++ - 我可以改进从文件中读取字符串吗?