elements = []
i,j = 0,0
while(i<3):
while(j<3):
elements[i][j] = int(input())
j+=1
i+=1
j=0
print(elements)
我正在尝试通过从用户处获取输入来将元素插入二维列表中。我无法这样做,它给了我一个IndexError。
IndexError: list assignment index out of range
我希望有3x3的列表。 像这样:
elements = [
[0,1,2],
[3,4,5],
[6,7,8]
]
我在这里做错了什么? [我不想使用Numpy或其他库atm]
答案 0 :(得分:0)
这将解决您的问题:
elements = []
i, j = 0,0
while(i<3):
elements.append([])
while(j<3):
elements[i].append(int(input()))
j+=1
i+=1
j = 0
print(elements)
要点:
在访问索引时,python中的列表不会自动追加,您必须构建列表。
您忘了将“ j”计数器归零,以便它在每一行中正确启动。
干杯!
答案 1 :(得分:0)
您遇到的问题是列表初始化为大小为0且为空列表。因此,当您必须在某个索引处设置值时,它会抛出错误,指出指定的索引超出范围,因为该索引不存在。
我的方法是就地改变现有列表,换句话说就是附加一个值。
首先获取尺寸作为输入
>>> rows = int(input("Enter no. of rows: "))
Enter no. of rows: 2
>>> cols = int(input("Enter no. of Columns: "))
Enter no. of Columns: 2
创建列表并遍历范围
>>> l = []
>>> for i in range(rows):
... row_vals = []
... for j in range(cols):
... row_vals.append(int(input(f"Enter value at {i}th row and {j}th column: ")))
... l.append(row_vals)
...
Enter value at 0th row and 0th column: 0
Enter value at 0th row and 1th column: 1
Enter value at 1th row and 0th column: 1
Enter value at 1th row and 1th column: 0
>>> l
[[0, 1], [1, 0]]