我一直在尝试创建一个单行输入的矩阵,例如,如果我输入"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()
返回字符串(作为输入的一部分(而不是整数。如果你想要一个数字列表(即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
标记了您的问题。因此,如果您的目的是输入方形 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.]])