Kopiowanie zagnieżdżonych list w Pythonie
Chcę skopiować listę 2D, tak, że jeśli zmodyfikuję jedną listę, druga nie będzie modyfikowana.
Dla listy jednowymiarowej robię to:
a = [1, 2]
b = a[:]
A teraz, jeśli zmodyfikuję b
, a
nie jest modyfikowany.
Ale to nie działa dla dwuwymiarowej listy:
a = [[1, 2],[3, 4]]
b = a[:]
Jeśli zmienię b
, a
zostaje również zmodyfikowany.
24
2 answers
Dla bardziej ogólnego rozwiązania, które działa niezależnie od liczby wymiarów, użyj copy.deepcopy()
:
import copy
b = copy.deepcopy(a)
40
Author: Ayman Hourieh,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-03-29 23:13:01
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-03-29 23:13:01
b = [x[:] for x in a]
40
Author: Ignacio Vazquez-Abrams,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-03-29 23:11:48
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-03-29 23:11:48