Maison >développement back-end >Tutoriel Python >Pourquoi l'opérateur ` =` de Python et la méthode `append()` produisent-ils des résultats différents lorsque vous travaillez avec des listes ?
Append() de Python vs. l'opérateur = pour les listes : pourquoi des résultats contrastés ?
La disparité apparente entre la méthode append() et l'opérateur = lorsqu'il est utilisé avec des listes peut prêter à confusion. Pour clarifier cette différence, examinons les mécanismes sous-jacents de ces opérations.
L'opérateur =
Lorsque l'opérateur = est appliqué à une liste, il ajoute effectivement le liste à droite de la liste d’origine. Toutefois, cette opération ne crée pas de nouvel objet de liste ; au lieu de cela, il modifie la liste existante en place.
La méthode append()
En revanche, la méthode append() insère explicitement l'objet fourni comme argument à la fin de la liste originale. Cette insertion entraîne le stockage d'une référence à la même instance de liste dans le dernier élément de la liste d'origine. Par conséquent, appeler récursivement append() sur la liste conduit à une boucle infinie.
Une illustration claire
Considérez l'extrait de code suivant :
<code class="python">c = [1, 2, 3] c += c print(c) # Output: [1, 2, 3, 1, 2, 3]</code>
Dans cet exemple, l'opérateur = ajoute les éléments de c (c'est-à-dire [1, 2, 3]) à c, doublant ainsi sa longueur.
Maintenant, modifions légèrement le code :
<code class="python">c = [1, 2, 3] c.append(c) print(c) # Output: [1, 2, 3, [...]]</code>
Ici, la méthode append() insère la liste entière c comme dernier élément. Cette récursivité se traduit par une boucle infinie car c[-1] devient identique à c lui-même.
Une approche alternative
Si votre intention est de concaténer des listes, vous pouvez utilisez la méthode extend() au lieu de l’opérateur =. La méthode extend(), comme la méthode , ajoute les éléments d'une autre liste (ou itérable) à la liste d'origine, la modifiant ainsi sur place.
Conclusion
La La distinction clé entre append() et l'opérateur = réside dans leurs comportements respectifs. L'opérateur = concatène les éléments de la liste de droite à la liste d'origine, tandis que append() insère la liste elle-même comme dernier élément, conduisant à une boucle récursive.
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!