Ошибка при создании двумерного массива Python IndexError: list index out of range

B=[]
for n in range(0,6):
    for k in range(0,6):
        B[n][k]=n+k

print(B)

Выдает ошибку IndexError: list index out of range


Ответы (2 шт):

Автор решения: Кирилл Малышев
B = []
for n in range(0, 6):
    tmp = []
    for k in range(0, 6):
        tmp.append(n + k)
    B.append(tmp) 

Или так:

B = [[0] * 6 for i in range(6)]
for n in range(0, 6):
    for k in range(0, 6):
        B[n][k]=n + k

Или так:

B = [[n + k for k in range(6)] for n in range(6)]
→ Ссылка
Автор решения: Михаил Муругов

Строка

B[n][k]=n+k

Значит "установить [n][k] элементу B значение n+k", но B изначально пустой, поэтому попытка обращения к любому его элементу выдаст ошибку.


Для Вашей цели подойдёт код:

B=[]
for n in range(0,6):
    B.append([])  # Добавляем(!!) в B ещё один список
    for k in range(0,6):
        B[n].append(n+k)  # Добавляем в добавленный список нужные элементы

Можно в одну строку:

B = [[n+k for k in range(6)] for n in range(6)]
→ Ссылка