我一直试图用单行输入创建一个矩阵,例如,如果我输入“ 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矩阵不远了,但是我对此一无所知。
答案 0 :(得分:0)
根据您的描述,您似乎想要执行以下操作:
l = []
for _ in range(num):
l.append(input().split())
请注意,split()
返回的是字符串(属于输入的一部分),而不是整数。如果要具有数字列表的列表(即float
或int
),则需要将字符串转换为适当类型的数字:
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
标记了问题。因此,如果您的目的是输入2D正方形numpy
数组,则可以执行以下操作:
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.]])