如何用單行輸入創建2D矩陣

2024-09-28 21:58:56 发布

您现在位置:Python中文网/ 问答频道 /正文

我试着用一行输入创建一个矩阵,比如,如果我输入“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索引,这意味着我们将其锁定到一个条目并给出多个输入,这是矛盾的,为了消除限制,我修改了它如下:

^{pr2}$

我知道这是完全错误的,它没有接近2D矩阵的地方,但我完全搞砸了。在


Tags: inforinput地方错误条目range矩阵
1条回答
网友
1楼 · 发布于 2024-09-28 21:58:56

根据您的描述,您可能希望执行以下操作:

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

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

^{pr2}$

或者,如果你坚持一句话:

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.]])

相关问题 更多 >