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 ?

Pourquoi l'opérateur ` =` de Python et la méthode `append()` produisent-ils des résultats différents lorsque vous travaillez avec des listes ?

Patricia Arquette
Libérer: 2024-10-29 08:30:04
original
1034 Les gens l'ont consulté

Why does Python's ` =` operator and the `append()` method produce different results when working with lists?

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>
Copier après la connexion

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>
Copier après la connexion

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!

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