Maison > développement back-end > Tutoriel Python > Le découpage de liste Python crée-t-il des copies ou des références ?

Le découpage de liste Python crée-t-il des copies ou des références ?

DDD
Libérer: 2024-11-08 14:32:02
original
941 Les gens l'ont consulté

Does Python List Slicing Create Copies or References?

Découpage de liste partielle sans copie en Python

L'opération de découpage de liste de Python génère des références aux éléments de la liste d'origine, plutôt que de créer des copies. Ce comportement provient du fait que le découpage préserve les identités d'objet des éléments de la liste.

Démonstration

Pour illustrer cela, considérons la liste suivante :

<code class="python">L = [1000 + 1, 1000 + 1, 1000 + 1]</code>
Copier après la connexion

Même si ces entiers ont la même valeur, ce sont des objets distincts :

<code class="python">map(id, L)
[140502922988976, 140502922988952, 140502922988928]</code>
Copier après la connexion

Découper la liste copie simplement les références :

<code class="python">b = L[1:3]
map(id, b)
[140502922988952, 140502922988928]</code>
Copier après la connexion

Mémoire Frais généraux du découpage

Bien que le découpage ne crée pas de copies d'objets, il implique la copie de références. Ces références s'ajoutent à la surcharge globale de mémoire associée aux listes :

<code class="python">for i in range(len(L)):
    x = L[:i]
    print('len: {}'.format(len(x)))
    print('size: {}'.format(sys.getsizeof(x)))</code>
Copier après la connexion

Cette surcharge peut s'accumuler, en particulier lorsque vous travaillez avec des objets gourmands en mémoire, comme de grandes listes ou des dictionnaires.

Alternative : Vues

Python ne dispose pas d'un moyen simple pour créer des vues ou des alias de listes. Cependant, les tableaux NumPy offrent cette fonctionnalité. Le découpage d'un tableau NumPy crée une vue qui partage la mémoire avec le tableau d'origine. Cela peut économiser une mémoire importante mais introduit des pièges potentiels lors de la modification d'objets.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal