Найти - Пользователи
Полная версия: Казус с обработкой списков.
Начало » Python для новичков » Казус с обработкой списков.
1 2
FishHook
dimy44
глубокую копию списка позволяет делать метод copy.deepcopy(list) модуля copy
Стандартный питонячий приём из учебника гораздо проще
a = [1, 2, 3]
b = a[:]
JOHN_16
FishHook
речь идет о глубокой копии, а этот прием не даст такого:
>>> a=[1,
... 2,
... ['q','w','e'],
... 4,
... {'1':[10,20,30]}]
>>> b=a[:]
>>> c=deepcopy(a)
>>> print '{}\n{}\n{}'.format(a,b,c)
[1, 2, ['q', 'w', 'e'], 4, {'1': [10, 20, 30]}]
[1, 2, ['q', 'w', 'e'], 4, {'1': [10, 20, 30]}]
[1, 2, ['q', 'w', 'e'], 4, {'1': [10, 20, 30]}]
>>> a[0]=-1
>>> print '{}\n{}\n{}'.format(a,b,c)
[-1, 2, ['q', 'w', 'e'], 4, {'1': [10, 20, 30]}]
[1, 2, ['q', 'w', 'e'], 4, {'1': [10, 20, 30]}]
[1, 2, ['q', 'w', 'e'], 4, {'1': [10, 20, 30]}]
>>> a[2][0]='Q'
>>> print '{}\n{}\n{}'.format(a,b,c)
[-1, 2, ['Q', 'w', 'e'], 4, {'1': [10, 20, 30]}]
[1, 2, ['Q', 'w', 'e'], 4, {'1': [10, 20, 30]}]
[1, 2, ['q', 'w', 'e'], 4, {'1': [10, 20, 30]}]
JOHN_16
mojahed
про основоположников: это базовые понятия Питона о неизменяемых и изменяемых типах данных. в частности к вопросу о составных (читай вложенных) структурах
mojahed
Осознал. Благодарю dimy44, PanovSergey и JOHN_16
за отзывчивость и наводку. Мои списки 2х уровневые и потому кроме copy.deepcopy(list) ничего не годится. Про это все неплохо с картинками http://www.python-course.eu/deep_copy.php. Жаль авторы не пишут по русски. Так что, про “ о составных (читай вложенных) структурах” до меня дошло.
py.user.next
FishHook
Стандартный питонячий приём из учебника гораздо проще
где-то тут уже обсуждали, почему он даёт только один слой
типа список представляет из себя массив указателей на объекты (не проверял),
и при таком копировании просто создаётся копия этого массива указателей; с immutable объектами это сработает нормально, а с mutable объектами - нет
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB