Инициализация списков: какой метод правильнее
Есть два способа инициализации списка (python 3.6):
Инициализация списка -- метод 1
x = [[1,2,3,4]] * 3
print(x)
Output: [[1, 2, 3, 4], [1, 2, 3, 4], [1, 2, 3, 4]]
Инициализация списка -- метод 2
y = [[1,2,3,4] for _ in range(3)]
print(y)
Output: [[1, 2, 3, 4], [1, 2, 3, 4], [1, 2, 3, 4]]
Какой метод следует использовать и почему?
Ответы (1 шт):
Автор решения: MBo
→ Ссылка
Первый метод создаёт один объект, и дублирует ссылку на него. При изменении одного из подсписков будет меняться и содержимое других
a = [[1,2,3,4]] * 3
a[1][1] = 5
print(a)
[[1, 5, 3, 4], [1, 5, 3, 4], [1, 5, 3, 4]]
a = [[1,2,3,4] for i in range(3)]
a[1][1] = 5
print(a)
[[1, 2, 3, 4], [1, 5, 3, 4], [1, 2, 3, 4]]