我刚开始工作python
,这是一个非常基本的问题:
我有一个input.txt
包含以下测试用例:
b---d
-d--d
--dd-
--d--
----d
5 X 5
Matrix
现在我想在python 代码的帮助下保存上述内容。这样当我想返回时matrix[0][2]
它返回-
。
我该怎么做?我试过了,但它打印出错误的答案。
我刚开始工作python
,这是一个非常基本的问题:
我有一个input.txt
包含以下测试用例:
b---d
-d--d
--dd-
--d--
----d
5 X 5
Matrix
现在我想在python 代码的帮助下保存上述内容。这样当我想返回时matrix[0][2]
它返回-
。
我该怎么做?我试过了,但它打印出错误的答案。
这很容易,因为字符串和文件也是可迭代的:
with open('input.txt') as matrixfile:
matrix = [list(line.strip()) for line in matrixfile]
list()
on a string 将其转换为单个字符的列表;我们.strip()
用来删除任何额外的空格,包括换行符。打开的matrixfile
文件对象是一个可迭代对象,因此我们可以遍历它来处理所有行。
结果:
>>> matrix
[['b', '-', '-', '-', 'd'], ['-', 'd', '-', '-', 'd'], ['-', '-', 'd', 'd', '-'], ['-', '-', 'd', '-', '-'], ['-', '-', '-', '-', 'd']]
>>> matrix[0][2]
'-'
因此,由于 Martijn 发布明显答案的速度更快,所以这里有另一个想法:
您实际上根本不需要创建嵌套列表(“矩阵”):
with open("input.txt") as infile:
matrix = [line.rstrip() for line in infile]
给你一个可以被索引的五个字符串的列表(这样做时会返回一个字符),就像嵌套列表可以:
>>> matrix
['b---d', '-d--d', '--dd-', '--d--', '----d']
>>> matrix[0][2]
'-'