Heim >Backend-Entwicklung >Python-Tutorial >Erstellt Python List Slicing Kopien von Elementen?

Erstellt Python List Slicing Kopien von Elementen?

Patricia Arquette
Patricia ArquetteOriginal
2024-11-07 06:04:03975Durchsuche

Does Python List Slicing Create Copies of Elements?

Listen in Python aufteilen, ohne Kopien zu generieren: Eine umfassende Anleitung

Das Kernkonzept: Referenzkopie vs. Objekt Kopieren

In Python Slicing Listen erstellt keine Kopien der einzelnen Elemente innerhalb der Liste. Stattdessen werden einfach die Verweise auf diese Elemente kopiert. Dies gilt sowohl für unveränderliche (z. B. ganze Zahlen) als auch veränderliche (z. B. Wörterbücher) Objekte.

Testen mit ganzzahligen Objekten

Um dies zu demonstrieren, betrachten Sie Folgendes folgender Code:

<code class="python">a = [1000 + 1, 1000 + 1, 1000 + 1]
b = a[1:3]</code>

Auch wenn die Objekte in Liste a unveränderliche Ganzzahlen sind, Beim Slicing wird eine neue Liste b erstellt, die auf dieselben Objekte verweist. Dies geht aus ihren identischen IDs hervor:

<code class="python">print(id(a[0]) == id(b[0]))  # True
print(id(a[1]) == id(b[1]))  # True</code>

Untersuchung des Speicher-Overheads

Slicing führt aufgrund des zusätzlich erstellten Listenobjekts zu einem gewissen Speicher-Overhead. Dieser Overhead ist jedoch unabhängig von der Länge der Liste konstant und im Vergleich zur Größe der Objekte selbst normalerweise vernachlässigbar.

Alternative: Numpy-Arrays für effiziente Ansichten

Wenn die Speichereinsparung ein vorrangiges Anliegen ist, sollten Sie die Verwendung von Numpy-Arrays anstelle von Python-Listen in Betracht ziehen. Durch das Aufteilen von Numpy-Arrays werden Ansichten in die Originaldaten erstellt, wobei derselbe Speicherplatz genutzt wird. Dies kann in Szenarien mit großen Datenmengen von großem Vorteil sein.

Es ist jedoch wichtig zu beachten, dass die Verwendung von Ansichten zusätzliche Überlegungen mit sich bringt, wie etwa mögliche unbeabsichtigte Änderungen über verschiedene Ansichten hinweg. Es ist wichtig, dieses Verhalten zu verstehen, um unerwartete Konsequenzen in Ihrem Code zu vermeiden.

Das obige ist der detaillierte Inhalt vonErstellt Python List Slicing Kopien von Elementen?. 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
Vorheriger Artikel:BCEWithLogitsLoss in PyTorchNächster Artikel:BCEWithLogitsLoss in PyTorch