Maison > développement back-end > Tutoriel Python > Comment puis-je conserver l'ordre de la liste après la conversion en un ensemble en Python ?

Comment puis-je conserver l'ordre de la liste après la conversion en un ensemble en Python ?

Mary-Kate Olsen
Libérer: 2024-12-10 18:56:10
original
949 Les gens l'ont consulté

How Can I Maintain List Order After Converting to a Set in Python?

Préserver l'ordre de la liste lors de la conversion en un ensemble

Lors de la conversion d'une liste en un ensemble en Python, l'ordre des éléments peut changer en raison des ensembles étant des structures de données non ordonnées. Ce comportement peut être gênant si vous devez conserver la commande d'origine.

  1. Raison de la modification de la commande

Les ensembles sont conçus pour permettre une recherche rapide des membres. en stockant des éléments sous forme de valeurs de hachage. L'ordre dans lequel les éléments sont ajoutés à l'ensemble n'est pas conservé. Ainsi, lorsque vous convertissez une liste en ensemble, les éléments sont réorganisés pour optimiser l'efficacité de la recherche.

  1. Préservation de l'ordre avec les opérations d'ensemble.

a. Compréhensions de liste

Si vous devez supprimer des éléments spécifiques d'une liste tout en préservant l'ordre, vous pouvez utiliser une compréhension de liste. Par exemple :

a = [1, 2, 20, 6, 210]
b = set([6, 20, 1])
result = [x for x in a if x not in b]  # [2, 210]
Copier après la connexion

b. OrderedDict (Python 3.7)

Pour les versions Python 3.7 et supérieures, vous pouvez utiliser collections.OrderedDict pour créer des ensembles ordonnés. Il maintient l'ordre des éléments, même après des opérations définies.

from collections import OrderedDict

a = OrderedDict.fromkeys([1, 2, 20, 6, 210])
b = OrderedDict.fromkeys([6, 20, 1])
result = OrderedDict.fromkeys(x for x in a if x not in b)  # OrderedSet([(2, None), (210, None)])
Copier après la connexion

c. OrderedSet (anciennes versions de Python)

Dans les anciennes versions de Python, vous pouvez utiliser le package Ordset pour obtenir des fonctionnalités similaires :

import orderedset

a = orderedset.OrderedSet([1, 2, 20, 6, 210])
b = orderedset.OrderedSet([6, 20, 1])
result = orderedset.OrderedSet(x for x in a if x not in b)
Copier après la connexion

En utilisant ces techniques, vous pouvez effectuer des opérations d'ensemble tout en préservant l'ordre original de la liste.

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