Maison >développement back-end >Tutoriel Python >Comment puis-je effectuer des opérations d'ensemble tout en préservant l'ordre d'origine des éléments ?

Comment puis-je effectuer des opérations d'ensemble tout en préservant l'ordre d'origine des éléments ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-12-16 16:41:10316parcourir

How Can I Perform Set Operations While Preserving the Original Order of Elements?

Opérations d'ensemble et préservation de l'ordre

Lors de la conversion d'une liste en un ensemble, l'ordre des éléments change car les ensembles sont des structures de données non ordonnées qui priorisent rapidement tests d'adhésion. Ils ne conservent pas l'ordre d'insertion d'origine.

Préservation de l'ordre dans les opérations d'ensemble

Pour effectuer des opérations d'ensemble sans perdre l'ordre initial, envisagez les options suivantes :

1. Compréhensions de liste pour la différence d'ensemble

Si vous avez une liste régulière et que vous devez supprimer un ensemble d'éléments tout en préservant l'ordre, utilisez une compréhension de liste :

a = [1, 2, 20, 6, 210]
b = set([6, 20, 1])
[x for x in a if x not in b]  # [2, 210]

2 . Clés de dictionnaire pour l'ensemble ordonné

Pour une structure de données avec des tests d'appartenance rapides et une préservation de l'ordre d'insertion, utilisez les clés d'un dictionnaire Python (à partir de Python 3.7) :

a = dict.fromkeys([1, 2, 20, 6, 210])
b = dict.fromkeys([6, 20, 1])
dict.fromkeys(x for x in a if x not in b)  # {2: None, 210: None}

3. Collections.OrderedDict (Legacy Support)

Pour les anciennes versions de Python, comptez sur collections.OrderedDict :

a = collections.OrderedDict.fromkeys([1, 2, 20, 6, 210])
b = collections.OrderedDict.fromkeys([6, 20, 1])
collections.OrderedDict.fromkeys(x for x in a if x not in b)  # OrderedDict([(2, None), (210, None)])

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
Article précédent:Fleurs dans PyTorchArticle suivant:Fleurs dans PyTorch