Python - Arrays kopieren

Hallo daar, aufstrebende Python-Programmierer! Heute werden wir in die faszinierende Welt der Array-Kopie in Python eintauchen. Als euer freundlicher Nachbar und Informatiklehrer freue ich mich, euch auf diesem Weg zu führen. Also, holt euch euer Lieblingsgetränk, macht euch bequem und lass uns gemeinsam auf diese Abenteuerreise aufbrechen!

Python - Copy Arrays

Arrays in Python verstehen

Bevor wir in die Array-Kopie einsteigen, lassen wir uns schnell den Umgang mit Arrays in Python erfrischen. In Python verwenden wir typischerweise Listen, um Arrays darzustellen. Listen sind vielseitig und können verschiedene Arten von Daten speichern.

Hier ist ein einfaches Beispiel einer Liste in Python:

fruits = ["Apfel", "Banane", "Kirsche"]
print(fruits)

Ausgabe:

['Apfel', 'Banane', 'Kirsche']

In diesem Beispiel ist fruits unsere Liste (oder Array), die drei String-Elemente enthält.

Nun lassen uns erkunden, wie wir diese Arrays kopieren können!

Arrays mit dem Zuweisungsoperator kopieren

Der einfachste Weg, um ein Array zu kopieren, mag das Verwenden des Zuweisungsoperators (=) sein. Allerdings gibt es bei dieser Methode ein paar Ausflüge. Lass uns sehen, wie das funktioniert:

original_list = [1, 2, 3, 4, 5]
copied_list = original_list

print("Original list:", original_list)
print("Kopierte list:", copied_list)

# Jetzt verändern wir die kopierte Liste
copied_list[0] = 100

print("\nNach der Änderung:")
print("Original list:", original_list)
print("Kopierte list:", copied_list)

Ausgabe:

Original list: [1, 2, 3, 4, 5]
Kopierte list: [1, 2, 3, 4, 5]

Nach der Änderung:
Original list: [100, 2, 3, 4, 5]
Kopierte list: [100, 2, 3, 4, 5]

Überraschung! Wenn wir copied_list verändert haben, hat sich auch original_list geändert! Dies liegt daran, dass der Zuweisungsoperator keine neue Liste erstellt. Stattdessen zeigen beide Variablen auf die gleiche Liste im Speicher. Es ist wie dem Freund dein Hauszimmer zu geben - er bekommt nicht ein neues Haus, nur Zugang zu deinem!

Flache Kopiermethoden

Um dies zu vermeiden, können wir flache Kopiermethoden verwenden. Diese erstellen eine neue Liste, aber die Elemente verweisen immer noch auf die gleichen Objekte. Lassen uns einige Möglichkeiten zur Erstellung flacher Kopien ansehen:

  1. Verwenden der copy()-Methode:
original_list = [1, 2, 3, 4, 5]
copied_list = original_list.copy()

copied_list[0] = 100

print("Original list:", original_list)
print("Kopierte list:", copied_list)

Ausgabe:

Original list: [1, 2, 3, 4, 5]
Kopierte list: [100, 2, 3, 4, 5]
  1. Verwenden des list()-Konstruktors:
original_list = [1, 2, 3, 4, 5]
copied_list = list(original_list)

copied_list[0] = 100

print("Original list:", original_list)
print("Kopierte list:", copied_list)

Ausgabe:

Original list: [1, 2, 3, 4, 5]
Kopierte list: [100, 2, 3, 4, 5]
  1. Verwenden von Slicing:
original_list = [1, 2, 3, 4, 5]
copied_list = original_list[:]

copied_list[0] = 100

print("Original list:", original_list)
print("Kopierte list:", copied_list)

Ausgabe:

Original list: [1, 2, 3, 4, 5]
Kopierte list: [100, 2, 3, 4, 5]

Diese Methoden funktionieren großartig für einfache Listen. Aber was ist, wenn wir eine Liste von Listen haben? Da müssen wir die schweren Waffen einsetzen!

Arrays mit Tiefenkopie kopieren

Beim Umgang mit verschachtelten Listen oder komplexen Objekten müssen wir eine Tiefenkopie verwenden. Diese erstellt eine vollständig unabhängige Kopie der ursprünglichen Liste, einschließlich aller verschachtelten Objekte. Es ist wie das Klonen deines Hauses und allem, was darin ist!

Um eine Tiefenkopie zu verwenden, müssen wir das copy-Modul importieren:

import copy

original_list = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
deep_copied_list = copy.deepcopy(original_list)

deep_copied_list[0][0] = 100

print("Original list:", original_list)
print("Tief kopierte list:", deep_copied_list)

Ausgabe:

Original list: [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
Tief kopierte list: [[100, 2, 3], [4, 5, 6], [7, 8, 9]]

Wie Sie sehen können, verändert das Ändern der tief kopierten Liste die ursprüngliche Liste nicht, auch nicht für verschachtelte Elemente.

Wann Tiefenkopie verwenden

Tiefenkopie ist leistungsstark, aber mit einem Leistungspreis verbunden. Es ist wie das Verpacken deines gesamten Hauses, um zu ziehen - es nimmt mehr Zeit und Mühe in Anspruch! Verwenden Sie Tiefenkopie, wenn:

  1. Sie verschachtelte Listen oder komplexe Objekte haben
  2. Sie sicherstellen müssen, dass die ursprünglichen und kopierten Daten völlig unabhängig sind
  3. Sie mit veränderlichen Objekten innerhalb Ihrer Liste umgehen

Zusammenfassung der Kopiermethoden

Hier ist eine praktische Tabelle, die die Kopiermethoden zusammenfasst, die wir besprochen haben:

Methode Syntax Art der Kopie Anwendungsfall
Zuweisung (=) new_list = old_list Referenz (Keine Kopie) Wenn Sie möchten, dass beide Variablen auf die gleiche Liste verweisen
copy()-Methode new_list = old_list.copy() Flache Kopie Für einfache Listen mit unveränderlichen Elementen
list()-Konstruktor new_list = list(old_list) Flache Kopie Für einfache Listen mit unveränderlichen Elementen
Slicing new_list = old_list[:] Flache Kopie Für einfache Listen mit unveränderlichen Elementen
copy.deepcopy() new_list = copy.deepcopy(old_list) Tiefenkopie Für verschachtelte Listen oder Listen mit veränderlichen Elementen

Denken Sie daran, die richtige Kopiermethode zu wählen, ist wie das Auswahl des richtigen Werkzeugs für eine Aufgabe. Sie würden nicht einen Brecheisen zum Hängen eines Bilderrahmens verwenden, oder? Ähnlich verwenden Sie die einfachste Kopiermethode, die Ihren Bedürfnissen entspricht.

Fazit

Herzlichen Glückwunsch! Sie haben gerade Ihre Python-Fähigkeiten aufgestockt, indem Sie die Array-Kopie beherrschten. Von einfachen Zuweisungen bis hin zu Tiefenkopien haben Sie jetzt ein Werkzeugkasten, um verschiedene Szenarien zu bewältigen. Denken Sie daran, dass Übung macht den Meister, also probieren Sie diese Methoden in Ihren eigenen Projekten aus.

Wenn wir jetzt zusammenfassen, hier ist ein kleiner Programmierer-Witz: Warum hat der Programmierer seinen Job aufgegeben? Er hat keine Arrays bekommen! ? (Verstehen Sie? Ein Anstieg!)

Weiterhin programmieren, weiterhin lernen und vor allem weiterhin Spaß mit Python haben!

Credits: Image by storyset