Maison >développement back-end >Tutoriel Python >Le découpage de liste Python crée-t-il des copies ou des références ?
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>
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>
Découper la liste copie simplement les références :
<code class="python">b = L[1:3] map(id, b) [140502922988952, 140502922988928]</code>
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>
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!