Освойте Python на курсе от Skypro. Вас ждут 400 часов обучения и практики (достаточно десяти часов в неделю), подготовка проектов для портфолио, индивидуальная проверка домашних заданий и помощь опытных наставников. Получится, даже если у вас нет опыта в IT.
Проблема
Python обладает своей особенностью при работе со списками. Допустим, существует список my_list
, и его нужно скопировать в новый список new_list
. Самым прявидным и простым способом кажется операция присваивания:
my_list = [1, 2, 3, 4, 5] new_list = my_list
Однако после этого при изменении new_list
, изменяется и исходный my_list
. Это происходит потому, что в Python списки являются изменяемыми объектами, и при присваивании new_list = my_list
создается не новый список, а новая ссылка на уже существующий. Это означает, что любые изменения в new_list
отразятся и на my_list
, так как обе переменные указывают на одни и те же данные.
new_list.append(6) print(my_list) # Выведет: [1, 2, 3, 4, 5, 6]
Решение
Чтобы избежать этого, необходимо создать копию (или клон) списка. В Python есть несколько способов сделать это.
Использование метода copy()
Самый простой и понятный способ — использовать встроенный метод copy()
:
my_list = [1, 2, 3, 4, 5] new_list = my_list.copy()
Теперь new_list
является отдельным списком, и изменения в нем не затрагивают my_list
.
Использование функции list()
Также можно использовать функцию list()
, которая преобразует итерируемый объект в список. Если в качестве аргумента передать список, то получится его копия:
my_list = [1, 2, 3, 4, 5] new_list = list(my_list)
На курсе Skypro «Python-разработчик» освоите основные инструменты программирования, получите опыт на реальных проектах и сможете стартовать в профессии уверенным новичком. Преподаватели — практикующие программисты с большим опытом, а в центре карьеры помогут составить цепляющее резюме и подготовиться к собеседованию.
Использование срезов
Еще один способ — использовать срезы. Если не указывать индексы начала и конца, то в результате получится копия всего списка:
my_list = [1, 2, 3, 4, 5] new_list = my_list[:]
Теперь, зная о том, как работают списки в Python, можно избежать неожиданных изменений исходных данных при их копировании.
Добавить комментарий