Ошибка: индекс списка вне диапазона | Как объявить список?

#python

Вопрос:

Я столкнулся с проблемой в python. Вот мой код:

 x = int(input())
a = list()
for c in range(1,x 1):
    for i in range(0,3):
        for j in range(0,3):
            if j == 2 and i == 1:
                a[c][i][j] = a[c][1][1]
                a[c][1][1] = None
                continue
            a[c][i][j] = int(input())
print(a)
 

Сообщение об ошибке выглядит следующим образом:

 ---------------------------------------------------------------------------
IndexError                                Traceback (most recent call last)
<ipython-input-12-96a108d4a9f6> in <module>
      8                 a[c][1][1] = None
      9                 continue
---> 10             a[c][i][j] = int(input())
     11 print(a)

IndexError: list index out of range
 

Теперь мой вопрос в том, почему это происходит? Я объявил список. О, еще кое-что. Как вы видите, я беру значения из цикла. Поэтому я не могу объявить какой-либо список, как

 a = [[2,3],[5,6]]
 

Итак, как я могу решить эту проблему? или вы можете предложить другой способ внести данные в список?
Я использую приложение. Но это создает еще одну проблему. Как использовать первое значение, например[0][0][0]?

Комментарии:

1. Почему вы отметили оба [python-3.x] и [python-2.7] ? Какой из них вы используете?

2. Извините, я здесь новичок. Я использую python 3.

3. Вы пытаетесь получить доступ к пустому списку… Любой индекс приведет к ошибке индекса. У вас есть a = list() , но вы никогда не добавляете к этому никаких ценностей…

4. Какова цель этого кодекса?

5. сделайте матрицу n*3*3 с пользовательским вводом 🙂

Ответ №1:

Ошибка означает, что вы обращаетесь к индексу, который находится вне диапазона вашего списка.

Когда вы объявляете свой список «а», он все еще пуст, поэтому вы не можете изменять значения внутри, потому что внутри нет значений. Вы не можете получить доступ, например, к[5], если в a нет 6 элементов (потому что индекс начинается с 0). Один из вариантов заключается в том, чтобы сначала заполнить список, а затем изменить значения, или вы можете добавлять значение по мере прохождения цикла.

Комментарии:

1. Спасибо. Ваш ответ очень мне помогает

Ответ №2:

Я понял. Теперь я объявляю a = [[[n]]] первым. Здесь n-любое натуральное число. Затем добавьте значения следующим a[i][j].append(x) образом

 a = [[[2]]]
a[0][0].append(1)
print(a)
 

Это вернет это

 [[[2,1]]]