Вебинары Разобраться в IT Реферальная программа
Программирование Аналитика Дизайн Маркетинг
07 Июл 2023
2 мин
3395

Клонирование списков в Python

Проблема Python обладает своей особенностью при работе со списками. Допустим, существует список my_list, и его нужно скопировать в новый список new_list. Самым

Освойте 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, можно избежать неожиданных изменений исходных данных при их копировании.

Тест на профориентацию
За 10 минут узнайте, как ваш опыт пригодиться в IT индустрии
Подробнее
Тест на профориентацию

Добавить комментарий