Двумерный массив. Проблема в заполнение
Давно не пользовался Питоном. Сейчас он мне нужен позарез, а я не могу даже массив заполнить двумерный. Вроде проанализировал всё и пытался оформить иначе, но всё без толку. Дело в том, что при добавление в главный массив побочные, предыдущие строчки заменяются ту, что добавилась в данный момент, и в конце концов все подмассивы превращаются в тот, который добавляется в данный момент. В чём причина и где я ошибся?
A=[]
sp=[]
N=int(input("Введите размер массива NxN = "))
for i in range(N):
sp.clear()
for j in range(N):
print("Введите элемент массива a[",i+1,"][",j+1,"] = ")
new = int(input())
sp.append(new)
A.append(sp)
print(A)
Работа программы:
Введите размер массива NxN = 3
Введите элемент массива a[ 1 ][ 1 ] =
1
Введите элемент массива a[ 1 ][ 2 ] =
2
Введите элемент массива a[ 1 ][ 3 ] =
3
Введите элемент массива a[ 2 ][ 1 ] =
4
Введите элемент массива a[ 2 ][ 2 ] =
5
Введите элемент массива a[ 2 ][ 3 ] =
6
Введите элемент массива a[ 3 ][ 1 ] =
7
Введите элемент массива a[ 3 ][ 2 ] =
8
Введите элемент массива a[ 3 ][ 3 ] =
9
[[7, 8, 9], [7, 8, 9], [7, 8, 9]]
Ответы (1 шт):
Автор решения: gord1402
→ Ссылка
Объект массива в python является ссылкой на ячейку памяти и добавляя его в другой массив, вы не создаёте новый массив. Так что нужно создавать новый массив на каждую строку. Вот правильный код заполнения:
A = []
N = int(input("Введите размер массива NxN = "))
for i in range(N):
sp = []
for j in range(N):
print("Введите элемент массива a[", i + 1, "][", j + 1, "] = ")
new = int(input())
sp.append(new)
A.append(sp)
print(A)