Il est intéressant de constater que les gens utilisent toujours l'expression "problème du monde réel" pour se moquer de la définition de la science théorique.
Si la liste est ordonnée, vous devez d'abord résoudre les problèmes suivants. Si votre liste comporte des éléments en double, quel doit être l'ordre lorsque vous la transformez en ensemble ? Quel est l'ordre si nous unissons deux ensembles ? Quel est l'ordre si nous intersectons deux ensembles avec un ordre différent sur les mêmes éléments ?
De plus, set est beaucoup plus rapide dans la recherche d'une clé particulière, ce qui est très bien dans le fonctionnement des sets (et c'est pourquoi vous avez besoin d'un set, mais pas d'une liste).
Si vous tenez vraiment à l'index, gardez-le sous forme de liste. Si vous souhaitez toujours effectuer des opérations sur les éléments de plusieurs listes, la méthode la plus simple consiste à créer un dictionnaire pour chaque liste avec les mêmes clés dans l'ensemble, ainsi qu'une valeur de liste contenant tous les indices de la clé dans la liste originale.
def indx_dic(l):
dic = {}
for i in range(len(l)):
if l[i] in dic:
dic.get(l[i]).append(i)
else:
dic[l[i]] = [i]
return(dic)
a = [1,2,3,4,5,1,3,2]
set_a = set(a)
dic_a = indx_dic(a)
print(dic_a)
# {1: [0, 5], 2: [1, 7], 3: [2, 6], 4: [3], 5: [4]}
print(set_a)
# {1, 2, 3, 4, 5}
149 votes
@KarlKnechtel - Oui "l'ordre est un concept sans signification pour les ensembles...en mathématiques" mais j'ai des problèmes du monde réel :)
1 votes
Sur CPython 3.6+
unique = list(dict.fromkeys([1, 2, 1]).keys())
. Cela fonctionne parce quedict
s préserver l'ordre d'insertion maintenant.