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
Freigeben: 2024-12-25 00:57:17
Original
356 Leute haben es durchsucht

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()
Nach dem Login kopieren
  • Slicing:
new_list = old_list[:]
Nach dem Login kopieren
  • list() Konstruktor:
new_list = list(old_list)
Nach dem Login kopieren
  • copy.copy() Funktion:
import copy
new_list = copy.copy(old_list)
Nach dem Login kopieren
  • copy.deepcopy() Funktion: (Kopiert verschachtelte Elemente rekursiv)
import copy
new_list = copy.deepcopy(old_list)
Nach dem Login kopieren

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}')
Nach dem Login kopieren

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)]
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage