Масив добавляется в матрицу некоректно

Алексей Екутов

Новичок
Пользователь
Окт 1, 2020
3
0
1
Нужно создать матрицу следующего вида:
[1, 2, 3, 4]
[2, 3, 4, 1]
[3, 4, 1, 2]
[4, 1, 2, 3]

При каждом шаге цикла я изменяю подмассив нужным образом. Если выводить массив в консоль всё работает, но когда добавляю массив в матрицу всегда добавляется изначальный вид массива. Как это исправить?

Код:
arr = [1,2,3,4]
matrix = []

for i in range(4):
  print(arr)
  arr.append(arr.pop(0))
  matrix.append(arr)
print()
print()
print(matrix)

Буду рад любой помощи
Заранее благодарю
Screenshot_1.png
 

Алексей Екутов

Новичок
Пользователь
Окт 1, 2020
3
0
1
Я скорее всего сумбурно озвучил проблему. Правильнее было бы сказать: Как мне добавить в матрицу то что выводит print() в цикле?
 

Алексей Екутов

Новичок
Пользователь
Окт 1, 2020
3
0
1
Так вы их и так уже добавили. Если вы хотите, чтобы вам выводило это:

то и используйте вывод с помощью цикла

Пожалуйста, прочитайте внимательно мой код и вопрос
 

MonaCCi

Пользователь
Пользователь
Сен 30, 2020
66
11
8
16
Пожалуйста, прочитайте внимательно мой код и вопрос
Извините, не понял
 

MonaCCi

Пользователь
Пользователь
Сен 30, 2020
66
11
8
16
Python:
arr = [1, 2, 3, 4]
matrix = []

for i in range(0, 4):
    matrix.append(arr.copy())
    arr.append(arr.pop(0))
print()
print()
print(matrix)
Долго думал, в чём проблема. Понял, что всё дело в ссылках.

Когда мы создаём объект и присваиваем его переменной, переменная только ссылается
на объект, а не представляет собой этот объект! То есть имя переменной указывает на
ту часть памяти компьютера, где хранится объект. Это называется привязкой имени к
объекту.
 

alext

Популярный
Пользователь
Май 10, 2020
288
66
28
Python:
arr = [1, 2, 3, 4]
new = [arr[i:] + arr[:i] for i in range(len(arr))]
 
  • Разочарован
Реакции: MonaCCi

Форум IT Специалистов