Чтобы добавить немного больше для путаницы между мелкой копией и просто назначить новое имя переменной для списка.
«Скажем, у нас есть:
x = [
[1,2,3],
[4,5,6],
]
Это утверждение создает 3 списки: 2 внутренних списка и один внешний список. Ссылка на внешний список затем становится доступной под именем x.Если мы выполняем
y = x
, данные не копируются. У нас все еще есть те же 3 списка в памяти где-то все это делает внешний список доступным под именем y, в дополнение к его предыдущему имени x. Если мы делаем
y = list(x)
или
y = x[:]
Это создает новый список с тем же содержимым, что и x. Список x содержит ссылку на 2 внутренних списка, поэтому новый список также будет содержать ссылку на те же самые 2 внутренних списка. Только один список копируется - внешний список. есть 4 списка в памяти, два внутренних списка, внешний список и копия внешнего списка. Исходный внешний список доступен под именем x, а новый внешний список становится доступным под именем y.
Внутренние списки не были пестрая!
Если у вас есть двумерный (или более высокий) список или любая вложенная структура данных, и вы хотите создать полная копия всего, то вы хотите использовать функцию deepcopy () в модуле копирования. Ваше решение также работает для 2-D списков, как итерации над элементами во внешнем списке и делает копию каждого из них, а затем создает новый внешний список для всех внутренних копий ».
Для сервисов, которые должны быть одиночными во всем приложении, рекомендуется определить их в модуле core , который затем импортируется в корневой модуль (AppModule
).
Для получения более подробной информации см. Angular Style Guide .