Maison  >  Article  >  développement back-end  >  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
DDDoriginal
2024-10-27 20:55:30933parcourir

 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>

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>

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>

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:
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