如何使用单行输入创建 2D 矩阵



我一直在尝试创建一个单行输入的矩阵,例如,如果我输入"1 2 3",它应该像 l[0][0]=[1,2,3]

for i in range(num):
for j in range(num):
l[i][j] = input().spilt()

它给出了超出范围的索引错误,我理解它为什么给出, 由于我们将 j 索引固定在循环点,这意味着我们将其锁定到一个条目并提供多个输入,这与删除限制器相矛盾,我像这样修改它:

for i in range(num):
l[i] = input().spilt()

我知道这完全错误,它与 2D 矩阵相去甚远,但我完全搞砸了。

根据您的描述,您似乎需要执行以下操作:

l = []
for _ in range(num):
l.append(input().split())

请注意,split()返回字符串(作为输入的一部分(而不是整数。如果你想要一个数字列表(即floatint(,那么你将需要将字符串转换为适当类型的数字:

l = []
for _ in range(num):
l.append(list(map(float, input().split()))) # float <-> int (if needed)

或者,如果您坚持使用单行:

l = [list(map(float, input().split())) for _ in range(num)]

另请注意,Python 没有 2D数组的概念。这是numpy一揽子计划中的一个概念。您还用numpy标记了您的问题。因此,如果您的目的是输入方形 2Dnumpy数组,您可以执行以下操作:

import numpy as np
l = np.array([input('Enter line: ').split() for _ in range(num)], dtype=np.float)

例:

In [18]: np.array([input('Enter line: ').split() for _ in range(num)], dtype=np.float)
Enter line: 1 2 3
Enter line: 4 5 6
Enter line: 7 8 9
Out[18]: 
array([[1., 2., 3.],
[4., 5., 6.],
[7., 8., 9.]])

最新更新