将元素插入二维列表

时间:2019-10-27 14:20:31

标签: python-3.x list

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]

2 个答案:

答案 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]]