【问题标题】:Inserting Elements into a 2 Dimensional List将元素插入二维列表
【发布时间】:2019-10-27 14:20:31
【问题描述】:
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]

【问题讨论】:

标签: python-3.x list


【解决方案1】:

您的情况的问题是列表初始化为大小为 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]]

【讨论】:

    【解决方案2】:

    这将解决您的问题:

    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”计数器归零,以便它在每一行中正确开始。

    干杯!

    【讨论】:

      猜你喜欢
      • 2021-01-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-11-26
      • 2013-02-17
      相关资源
      最近更新 更多