Jak mogę to zrobić we właściwy sposób?

a = ['1','2']
b = []
for value in a:
    b.append(value)

Muszę to zrobić, ponieważ chcę zmienić wartości w a, ale chcę je zachować w b. Kiedy robię b = a, wydaje się, że po prostu ustawiam wskaźniki na wartości w a.

0
Rektek 2 kwiecień 2020, 18:19

3 odpowiedzi

Najlepsza odpowiedź

Powielone odniesienie (wskazujące na tę samą listę):

b = a

Wersja elektroniczna (wszystkie te same elementy, ale inna lista):

b = a[:]      # special version of the slice notation that produces a softcopy
b = list(a)   # the list() constructor takes an iterable. It can create a new list from an existing list
b = a.copy()  # the built-in collections classes have this method that produces a soft copy

W przypadku głębokiej kopii (kopie wszystkich elementów, a nie tylko tych samych elementów), chciałbyś wywołać wbudowany moduł copy .:

from copy import deepcopy

b = deepcopy(a)
2
Green Cloak Guy 2 kwiecień 2020, 15:24

Możesz to po prostu zrobić za pomocą:

b = a[:]
1
Giuseppe 2 kwiecień 2020, 15:21

Aby skopiować listę do innej listy, możesz skorzystać z następujących opcji.

b = a.copy()
0
Nikhil Gupta 2 kwiecień 2020, 15:23