Maison > développement back-end > Tutoriel Python > Python Append() vs = sur les listes : pourquoi donnent-ils des résultats différents ?

Python Append() vs = sur les listes : pourquoi donnent-ils des résultats différents ?

DDD
Libérer: 2024-10-27 20:55:30
original
1031 Les gens l'ont consulté

 Python Append() vs.  = on Lists: Why Do They Give Different Results?

Python Append() vs. = Opérateur sur les listes : comprendre les écarts de résultats

En Python, la méthode append() et le = L’opérateur peut être utilisé pour modifier les listes. Cependant, ces opérations produisent parfois des résultats inattendus, notamment lorsqu'il s'agit de listes imbriquées. Cet article a pour objectif d'expliquer pourquoi les deux approches se comportent différemment.

L'opérateur =

L'opérateur = ajoute les éléments de la liste de droite au liste sur le côté gauche. La liste d'origine est modifiée et la liste mise à jour est renvoyée. Par exemple :

<code class="python">c = [1, 2, 3]
c += c  # This is equivalent to c.extend(c)
print(c)  # Output: [1, 2, 3, 1, 2, 3]</code>
Copier après la connexion

Dans ce cas, l'opérateur = concatène les éléments de c avec c, ce qui donne une liste double de la taille d'origine.

L'append() Méthode

La méthode append() insère l'objet spécifié dans la liste à la fin. Contrairement à l'opérateur =, la méthode append() ne concatène pas les éléments de l'objet mais l'ajoute plutôt comme référence à la liste d'origine. Par exemple :

<code class="python">c = [1, 2, 3]
c.append(c)  # This is equivalent to c.insert(len(c), c)
print(c)  # Output: [1, 2, 3, [...]]</code>
Copier après la connexion

Dans ce cas, la méthode append() ajoute une référence à la liste c à la fin de c. Il en résulte une référence circulaire, où c[-1] et c font référence au même objet. Lors de l'impression de c, vous obtiendrez le résultat [1, 2, 3, [...]], où [...] représente la récursivité infinie.

Pourquoi la différence ?

La principale différence entre l'opérateur = et la méthode append() est que la première agit sur les éléments de l'objet spécifié, tandis que la seconde traite l'objet dans son ensemble. Lors de l'ajout d'une liste à l'aide de =, Python concatène les éléments, ce qui copie efficacement chaque élément dans la nouvelle liste. En revanche, lors de l'ajout d'une liste à l'aide de append(), Python ajoute simplement une référence à la liste d'origine, ce qui peut conduire à une récursion infinie si la liste contient une référence à elle-même.

Alternatives

Si votre intention est de concaténer deux listes, vous pouvez utiliser la méthode extend() au lieu de l'opérateur =. La méthode extend() fonctionne de manière similaire à = mais ne modifie pas la liste d'origine. Par exemple :

<code class="python">c = [1, 2, 3]
c.extend(c)
print(c)  # Output: [1, 2, 3, 1, 2, 3]</code>
Copier après la connexion

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!

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