问题描述
我遇到了python中的问题,要读取的2d数组的输入格式为
3 # number of rows and columns of a square matrix
1 2 3 # first row
3 4 6 # second row
4 6 3 # third row
我如何从上述控制台读取二维数组
的Python版本:3.6
IDE:Spyder(Python 3.6)
1楼
n = int(input())
matrix = dict()
for i in range(n):
matrix["row"+str(i)] = input().split() # i assume you want the numbers seperated too
这用您想要输入的行数来制作字典,其中包含您最初说的输入数
所以矩阵的二分法现在是
{'row0': ['1', '2', '3', '4'],
'row1': ['3', '4', '6', '9'],
'row2': ['4', '6', '3', '1']}
如果您希望它们存储为整数
n = int(input())
matrix = dict()
for i in range(n):
matrix["row"+str(i)] = [int(i) for i in input().split()]
输出
{'row0': [1, 2, 3, 4],
'row1': [3, 4, 6, 9],
'row2': [4, 6, 3, 1]}
或者作为仅输出列表列表的单行
[[int(i) for i in input().split()] for _ in range(int(input()))]
输出
[[1, 2, 3, 4], [3, 4, 6, 9], [4, 6, 3, 1]]
或作为字典oneliner
{'row'+str(q) : [int(i) for i in input().split()] for q in range(int(input()))}
输出
{'row0': [1, 2, 3, 4], 'row1': [3, 4, 6, 9], 'row2': [4, 6, 3, 1]}
就像帕特里克(Patric)指出的,
{q : [int(i) for i in input().split()] for q in range(int(input()))}
输出
{1: [1, 2, 3, 4], 2: [3, 4, 6, 9], 3: [4, 6, 3, 1]}
该解决方案速度更快,因为字典使用哈希,因此在到达所需索引之前不必遍历整个列表。
2楼
如果数字用单个空格分隔,则可以使用以下代码:
n = int(input())
matrix = []
for i in range(n):
row = [int(x) for x in input().split()]
matrix.append(row)
如果您使用的分隔符不同,则可以将其作为参数放入split()
函数中。