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.
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.
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]
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)])
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)
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!