Форум программистов, компьютерный форум, киберфорум
Python
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.91/34: Рейтинг темы: голосов - 34, средняя оценка - 4.91
 Аватар для father_igni
1 / 1 / 1
Регистрация: 08.03.2015
Сообщений: 127

Как создать копию объекта

06.06.2016, 19:52. Показов 6640. Ответов 16
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Не могу найти ни в документации ни в других местах
как можно создать копию (независимую) объекта, а как ссылку на объект
метод проведения эксперементов "пальцем в небо" не дал результатов

т.е. есть list или любой другой тип и создаем точную копию, а не ссылку на него.

чтоб работало делаю так:
Python
1
2
some_list = [1,2,3,4,5]
copy = set(some_list)
но негоже сие
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
06.06.2016, 19:52
Ответы с готовыми решениями:

Python - не могу создать резервную копию
Вводится такой код (по задаче из книги Swaroop`a.) Cама задача: Составить программу, которая создаёт резервные копии всех наших важных...

Как создать копию класса
Как сделать так что бы передать параметры a к b, но a не изменялась при изменении b class A(object): def __init__(self, name): ...

Как создать копию двумерного списка
В этом простом коде, где-то ошибка. Я пытаюсь создать копию двумерного списка, и мне это не удаётся. Не могу понять в чём дело, нужна...

16
2742 / 2341 / 620
Регистрация: 19.03.2012
Сообщений: 8,830
06.06.2016, 19:58
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
>>> a = [1, 2, 3]
>>> b = a
>>> 
>>> a[0] = 'ffff'
>>> b
['ffff', 2, 3]
>>> import copy
>>> c = copy.deepcopy(b)
>>> c
['ffff', 2, 3]
>>> c[0] = 1
>>> c
[1, 2, 3]
>>> b
['ffff', 2, 3]
1
Эксперт Python
 Аватар для dondublon
4653 / 2073 / 366
Регистрация: 17.03.2012
Сообщений: 10,183
Записей в блоге: 6
07.06.2016, 07:21
В общем случае показали, а со списком можно ещё так:
Python
1
lst[:]
0
2742 / 2341 / 620
Регистрация: 19.03.2012
Сообщений: 8,830
07.06.2016, 08:35
Только это поверхностное копирование и так вложенные списки словари и т д не будет скопированы.
0
 Аватар для father_igni
1 / 1 / 1
Регистрация: 08.03.2015
Сообщений: 127
07.06.2016, 10:00  [ТС]
та да, так только "внешний" список новый.

жаль, что приходится пользоваться дополнительными алгоритмами, а по умолчанию это ссылки
0
2742 / 2341 / 620
Регистрация: 19.03.2012
Сообщений: 8,830
07.06.2016, 10:43
За счет ссылок все работает быстрее и ни каких проблем это не вызывает.

Если у тебя есть какие-то проблемы с этим, то скорее всего они только из-за недопонимания базовых вещей.
0
 Аватар для father_igni
1 / 1 / 1
Регистрация: 08.03.2015
Сообщений: 127
07.06.2016, 14:07  [ТС]
да, возможно, я изначально инженер механик
но часто мне нужна именно новая копия, которая будет работать независимо... чаще чем ссылка
0
2742 / 2341 / 620
Регистрация: 19.03.2012
Сообщений: 8,830
07.06.2016, 15:28
father_igni, для чего, аргументируй, где тебе шибко сильно мешает, что список может измениться?

И вообще если уж пошло на то, что нужен не изменяемый объект, то используй кортежи.
0
 Аватар для father_igni
1 / 1 / 1
Регистрация: 08.03.2015
Сообщений: 127
07.06.2016, 16:33  [ТС]
Я такого не говорил
Я говорил, что мне нужно создать отдельный объект идентичный (на момент создания) данному, который далее живет отдельной жизнью, а не изменяется в соответствии с оригиналом, и тут не важно, список это кортеж или еще что нибудь.

Например направленный граф описан двумя dictionary (не знаю как по русски, стараюсь читать буржуйскую литературу)
один - вход, другой - выход (да избыточно, но пусть будет)
Надо в граф добавлять/удалять узлы и связи,
у нас ключ - узел, связи - список значений тех же узлов.

Удаляя узел, надо удалить все связи к нему ведущие. Причем в первую очередь в списках других узлов.
и вот тут нам и нужен перечень узлов которые имеют связи с данным (который мы удаляем), не перебором же пробегаться по всем узлам...
И вот баг с котором я долго тупил, как раз был в ссылке, а не отдельном перечне, т.е. список менялся по мере удаления связей и это было печально
0
2742 / 2341 / 620
Регистрация: 19.03.2012
Сообщений: 8,830
07.06.2016, 16:57
Не вижу в решении этой задачи ни каких проблем.
0
 Аватар для father_igni
1 / 1 / 1
Регистрация: 08.03.2015
Сообщений: 127
07.06.2016, 16:59  [ТС]
подскажите?
0
2838 / 1647 / 254
Регистрация: 03.12.2007
Сообщений: 4,222
07.06.2016, 18:15
Python
1
2
3
4
for v in edges_from[vertex_to_delete]:
    edges_to[v].remove(vertex_to_delete)
for v in edges_to[vertex_to_delete]:
    edges_from[v].remove(vertex_to_delete)
0
 Аватар для father_igni
1 / 1 / 1
Регистрация: 08.03.2015
Сообщений: 127
07.06.2016, 18:27  [ТС]
да, но нет...
я примерно так и думал написать изначально
0
0 / 0 / 0
Регистрация: 05.06.2016
Сообщений: 5
13.06.2016, 19:15
>>> d_orig = {0: 1, 1: 2}
>>> d_orig
{0: 1, 1: 2}
>>> d_copy = d_orig.copy()
>>> d_copy
{0: 1, 1: 2}
>>> d_copy[1] = 5
>>> d_copy
{0: 1, 1: 5}
>>> d_orig
{0: 1, 1: 2}
0
440 / 432 / 159
Регистрация: 21.05.2016
Сообщений: 1,338
14.06.2016, 06:55
Цитата Сообщение от craneua Посмотреть сообщение
>>> d_orig = {0: 1, 1: 2}
>>> d_orig
{0: 1, 1: 2}
>>> d_copy = d_orig.copy()
>>> d_copy
{0: 1, 1: 2}
>>> d_copy[1] = 5
>>> d_copy
{0: 1, 1: 5}
>>> d_orig
{0: 1, 1: 2}
>>> d_orig = {0: 1, 1: 2, 2:{3:1,4:4}}
>>> d_copy = d_orig.copy()
>>> d_orig[2][3] = 7
>>> d_copy
{0: 1, 1: 2, 2: {3: 7, 4: 4}}
0
0 / 0 / 0
Регистрация: 05.06.2016
Сообщений: 5
14.06.2016, 13:02
тогда, если это будет лучше:
>>> import copy
>>> d_orig = {0: 1, 1: 2, 2:{3:1,4:4}}
>>> d_orig
{0: 1, 1: 2, 2: {3: 1, 4: 4}}
>>> d_copy = copy.deepcopy(d_orig)
>>> d_copy
{0: 1, 1: 2, 2: {3: 1, 4: 4}}
>>> d_orig[2][3] = 7
>>> d_orig
{0: 1, 1: 2, 2: {3: 7, 4: 4}}
>>> d_copy
{0: 1, 1: 2, 2: {3: 1, 4: 4}}
0
2742 / 2341 / 620
Регистрация: 19.03.2012
Сообщений: 8,830
14.06.2016, 13:04
craneua, а об этом сказано ещё в самом начале поста и код нужно в теги вставлять.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
14.06.2016, 13:04
Помогаю со студенческими работами здесь

Как проще всего создать копию многомерного списка в Python 3?
Пусть мы имеем список А и нам надо создать список В, все элементы которого такие же как у списка А. После этого в списке В мы изменим один...

Как создать копию объекта?
Как создать копию объекта а не еще одну ссылку на объект........?

Как создать копию (клон) объекта?
Вопрос к делфистам. Заранее(до запуска) не известен тип класса(знаем только родителя). А в режиме RunTime выясняется типа класса(у...

Как создать копию объекта любого класса?
Set MyObj = AnyObj присваивает MyObj ссылку на объект AnyObj. Как скопировать объект целиком ? (класс содержит слишком много внутренних...

Как создать копию объекта, зная его указатель?
Здравствуйте, существует следующая проблема. В своей программе я рисую график используя класс QwtPolarPlot. По нажатию на график, должно...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
17
Ответ Создать тему
Новые блоги и статьи
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои. А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20% kYBz3eJf3jQ
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru