Вопрос о заполнении 2D-массива в Python

#python #multidimensional-array

#python #многомерный массив

Вопрос:

Я хочу заполнить массив размером 3 * 3. Этот код работает так, как задумано:

 arr = [ [] ] * 3
for i in range(3): 
    arr[i] = (list(map(int, input().split()[:3])))
print(arr)
 

Но если я напишу это так:

 arr = [ [] ] * 3
for i in arr: 
    arr[i] = (list(map(int, input().split()[:3])))
print(arr)
 

Выдает ошибку: «TypeError: индексы списка должны быть целыми или фрагментами, а не списком».

Что я делаю не так во втором примере?

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

1. Попробуйте вставить print(i) в цикл for, чтобы понять, какие значения i принимают в каждом случае.

Ответ №1:

Попробуйте запустить этот фрагмент:

 arr = [ [] ] * 3
for i in arr: 
    print(i)
 

результат должен быть таким:

 []
[]
[]
 

Когда вы пытаетесь присвоить результат arr[i] , на самом деле вы присваиваете arr[[]] , который вызывает ошибку TypeError: list indices must be integers or slices, not list . К вашему элементу массива следует обращаться с помощью целых чисел или фрагментов. Например arr[1] , или arr[0:3] .

Решение вашего кода:

 arr = [ [] ] * 3
for i in len(range(3)): 
    arr[i] = (list(map(int, input().split()[:3])))
print(arr)