当前位置: 代码迷 >> python >> ro如何在Python中将多行衬砌的输入读入2d数组
  详细解决方案

ro如何在Python中将多行衬砌的输入读入2d数组

热度:84   发布时间:2023-07-14 08:43:38.0

我遇到了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)

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]}

该解决方案速度更快,因为字典使用哈希,因此在到达所需索引之前不必遍历整个列表。

如果数字用单个空格分隔,则可以使用以下代码:

n = int(input())
matrix = []
for i in range(n):
  row = [int(x) for x in input().split()]
  matrix.append(row)

如果您使用的分隔符不同,则可以将其作为参数放入split()函数中。