Maison > développement back-end > Tutoriel Python > Pourquoi la conversion d'une liste en ensemble modifie-t-elle l'ordre et comment puis-je le conserver ?

Pourquoi la conversion d'une liste en ensemble modifie-t-elle l'ordre et comment puis-je le conserver ?

Linda Hamilton
Libérer: 2024-12-30 22:18:13
original
319 Les gens l'ont consulté

Why Does Converting a List to a Set Change the Order, and How Can I Preserve It?

Modifications de l'ordre dans les conversions d'ensembles

Lors de la conversion d'une liste en un ensemble en Python, l'ordre des éléments semble être modifié. Cela peut être déroutant, car les listes conservent l’ordre de leurs éléments, tandis que les ensembles sont des structures de données non ordonnées. La raison de cet écart réside dans la nature fondamentale des ensembles.

Les ensembles sont conçus pour effectuer des tests d'appartenance efficaces et ne conservent pas l'ordre d'insertion des éléments. En effet, les ensembles sont représentés en interne sous forme de tables de hachage, où les éléments sont stockés de manière brouillée pour une recherche plus rapide.

Comment conserver la commande

Si vous avez besoin de la préservation d'ordre dans vos collectes de données, il existe plusieurs alternatives à l'utilisation d'ensembles :

  • Liste Compréhension : Pour effectuer des opérations d'ensemble tout en conservant l'ordre d'origine, utilisez une compréhension de liste. Par exemple, pour supprimer des éléments d'une liste A basée sur un ensemble B, utilisez le code suivant :
B = set([6, 20, 1])
result = [x for x in A if x not in B]
Copier après la connexion
  • Dictionnaire ordonné (Python 3.7) : Python les dictionnaires fournissent désormais la fonctionnalité OrderedDict, garantissant la préservation de l'ordre d'insertion. Pour effectuer des opérations d'ensemble :
import collections
A = collections.OrderedDict.fromkeys([1, 2, 20, 6, 210])
B = collections.OrderedDict.fromkeys([6, 20, 1])
result = collections.OrderedDict.fromkeys(x for x in A if x not in B)
Copier après la connexion
  • Anciennes versions de Python : Pour les versions de Python antérieures à 3.7, utilisez plutôt le module collections.OrderedDict.

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!

source:php.cn
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal