Jakie są opcje klonowania lub kopiowania listy w Pythonie? Podczas używania new_list = my_list, wszelkie modyfikacje new_list zmieniają my_list za każdym razem. Dlaczego tak się dzieje?
1 odpowiedź
Z new_list = my_list nie masz w rzeczywistości dwóch list. Przypisanie po prostu kopiuje odniesienie do listy, a nie rzeczywistą listę, więc zarówno nowa_lista, jak i moja_lista odwołują się do tej samej listy po przypisaniu.
Aby faktycznie skopiować listę, masz różne możliwości:
-Możesz użyć wbudowanej metody list.copy() (dostępnej od wersji Python 3.3):
new_list = old_list.copy()
-Możesz użyć wbudowanej funkcji list():
new_list = list(old_list)
-Możesz użyć generycznego copy.copy()
import copy
new_list = copy.copy(old_list)
-Jeśli lista zawiera obiekty i chcesz je również skopiować, użyj generycznego copy.deepcopy():
import copy
new_list = copy.deepcopy(old_list)