Вставка элементов в двухмерный список - PullRequest
1 голос
/ 27 октября 2019
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

Я ожидаю список 3х3. Что-то вроде:

elements = [
           [0,1,2],
           [3,4,5],
           [6,7,8]
           ]

Что я здесь не так делаю? [Я не хочу использовать Numpy или другие библиотеки atm]

Ответы [ 2 ]

0 голосов
/ 27 октября 2019

Проблема в вашем случае заключается в том, что список инициализируется размером 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]]
0 голосов
/ 27 октября 2019

Это решит вашу проблему:

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", чтобы он правильно начинался в каждой строке.

Приветствия!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...