Maison > Article > développement back-end > Python Append() vs = sur les listes : pourquoi donnent-ils des résultats différents ?
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!