Heim >Backend-Entwicklung >Python-Tutorial >Wie erstelle ich wirklich unabhängige Kopien von Python-Listen?

Wie erstelle ich wirklich unabhängige Kopien von Python-Listen?

Patricia Arquette
Patricia ArquetteOriginal
2024-12-25 00:57:17364Durchsuche

How to Create Truly Independent Copies of Python Lists?

Unveränderbare Klone von Python-Listen erstellen

Beim Zuweisen von new_list zu my_list handelt es sich nicht um eine tatsächliche separate Listenerstellung. Stattdessen handelt es sich nur um einen Verweis, der auf dieselbe Liste verweist, wodurch alle Änderungen in new_list in my_list widergespiegelt werden.

Listen effektiv kopieren

Um unerwartete Listenänderungen zu vermeiden, Es gibt mehrere Methoden zum Klonen von Listen:

  • list.copy() Methode: (Python 3.3):
new_list = old_list.copy()
  • Slicing:
new_list = old_list[:]
  • list() Konstruktor:
new_list = list(old_list)
  • copy.copy() Funktion:
import copy
new_list = copy.copy(old_list)
  • copy.deepcopy() Funktion: (Kopiert verschachtelte Elemente rekursiv)
import copy
new_list = copy.deepcopy(old_list)

Beispiel:

class Foo:
    def __init__(self, val):
        self.val = val

foo = Foo(1)

a = ['foo', foo]
b = a.copy()
c = a[:]
d = list(a)
e = copy.copy(a)
f = copy.deepcopy(a)

a.append('baz')
foo.val = 5

print(f'original: {a}\nlist.copy(): {b}\nslice: {c}\nlist(): {d}\ncopy: {e}\ndeepcopy: {f}')

Ausgabe:

original: ['foo', Foo(5), 'baz']
list.copy(): ['foo', Foo(5)]
slice: ['foo', Foo(5)]
list(): ['foo', Foo(5)]
copy: ['foo', Foo(5)]
deepcopy: ['foo', Foo(1)]

Das obige ist der detaillierte Inhalt vonWie erstelle ich wirklich unabhängige Kopien von Python-Listen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn