#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)