Oh oui je sais, c'est juste une infoJe n'avais pas chercher des résultats
Je confirme, c'est 2 fois plus lentPs: Lors d'autres tests j'avais constater que while et 'plus long' que for. A confirmer.
Oh oui je sais, c'est juste une infoJe n'avais pas chercher des résultats
Je confirme, c'est 2 fois plus lentPs: Lors d'autres tests j'avais constater que while et 'plus long' que for. A confirmer.
Celui qui trouve sans chercher est celui qui a longtemps cherché sans trouver.(Bachelard)
La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information.(Einstein)
analyse de la fonction rambc :
temps : 10.79 secondes
analyse de la fonction tyrtamos_while :
temps : 13.1 secondes
analyse de la fonction MClaveau :
temps : 16.979999999999997 secondes
analyse de la fonction tyrtamos :
temps : 23.140000000000008 secondes
analyse de la fonction pausekawa :
temps : 33.08999999999999 secondes
analyse de la fonction fred1599 :
temps : 41.05 secondes
analyse de la fonction yoshik :
temps : 73.14 secondes
Celui qui trouve sans chercher est celui qui a longtemps cherché sans trouver.(Bachelard)
La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information.(Einstein)
Bonjour,
C'est une solution très élégante pour traiter les exemples donnés, mais il faut impérativement que dans les couples, les 2 éléments soient identiques (comme ('a','a')).
Code : Sélectionner tout - Visualiser dans une fenêtre à part lepuree=dict(ldata).items()
En effet, dans la conversion en dict, le couple ('x','y') est transformé en {'x':'y'}. Donc, s'il y a des couples comme [('a','b'),('a','c')], alors ce sont les doublons de clés qui seront éliminés => [('a','c')]
Tyrtamos
Un expert est une personne qui a fait toutes les erreurs qui peuvent être faites, dans un domaine étroit... (Niels Bohr)
Mes recettes python: http://www.jpvweb.com
Oui, cela ne s'applique qu'à des paires mais c'est frais et répond à l'exemple de la question d'origine.
Ceci dit quel intérêt d'avoir des listes de paires ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part maListe = [[a,a], [b,b], [a,a], [b,b]]
est bien plus simple (et set fonctionne).
Code : Sélectionner tout - Visualiser dans une fenêtre à part maListe = [a, b, a, b]
Erreur d'énoncé ? C'est a kali38 de nous dire.
Pour moi cela répond à la question (et uniquement dans ce cas).
@+
Merci d'utiliser le forum pour les questions techniques.
Bonjour.
Que de réponses pour une question a priori simple...
J'ai deux questions :
- Comment la liste est-elle construite ? Souvent on oublie que l'on peut lors de la fabrication de la liste se charger des doublons.
- Quelle est la taille de la liste ? Pour de grandes listes, il existe une tactique : faire une liste de sous-liste, lesquelles sous-listes ont des points en commun. Ses points communs sont à définir au cas par cas.
Bonjour,
J'ai une nouvelle proposition:
set fonctionne bien pour éliminer les doublons, mais pas avec les listes (non-hashables) comme l'avait dit wiztricks. Il suffit donc de convertir les couples en tuples. En utilisant en plus un "set compréhension" (grâce aux accolades).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 liste = [['a','a'], ['a','a'], ['a','a'], ['b','b'], ['a','a'], ['b','b']] x = list({tuple(elem) for elem in liste}) print x [('a', 'a'), ('b', 'b')]
Si on veut retrouver une liste de listes, et pas une liste de tuples, une simple "list compréhension" le fera très bien:
On peut même regrouper l'ensemble pour tout faire en une seule ligne:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 y = [list(elem) for elem in x] print y [['a', 'a'], ['b', 'b']]
Tyrtamos
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 z = [list(elem2) for elem2 in {tuple(elem1) for elem1 in liste}] print z [['a', 'a'], ['b', 'b']]
Un expert est une personne qui a fait toutes les erreurs qui peuvent être faites, dans un domaine étroit... (Niels Bohr)
Mes recettes python: http://www.jpvweb.com
En fait non, ma 1ère proposition est identiqueJ'ai une nouvelle proposition:
Celui qui trouve sans chercher est celui qui a longtemps cherché sans trouver.(Bachelard)
La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information.(Einstein)
Un expert est une personne qui a fait toutes les erreurs qui peuvent être faites, dans un domaine étroit... (Niels Bohr)
Mes recettes python: http://www.jpvweb.com
Mais il n'y a pas de mal
Celui qui trouve sans chercher est celui qui a longtemps cherché sans trouver.(Bachelard)
La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information.(Einstein)
Voui, enfin, si on n’a pas le set comprehension, on utilise set() sur une list comprehension*:
Code python : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 liste = [['a','a'], ['a','a'], ['a','a'], ['b','b'], ['a','a'], ['b','b']] z = [list(elem2) for elem2 in set([tuple(elem1) for elem1 in liste])] print z
[EDIT] On peut même utiliser frozenset, vu qu’on ne modifie pas le set. Mais comme ça ne semble avoir aucun effet sur les perfs…
[EDIT2] Bon, ben oui, c’était déjà donné au début… Je me demande qui a jeté un sort à ce post pour qu’il se développe comme ça, alors que la première réponse de rambc était suffisante, en fait…
Salut,
La question n'est pas "si" simple.
Elle est un peu "compliquée" par la représentation:
qui n'apporte pas plus d'infos que les représentations:
- [['a','a'], ['a','a'], ['a','a'], ['b','b'], ['a','a'], ['b','b']]
- [ 'aa', 'aa', 'aa', 'bb', 'aa', 'bb']
- [ ('a','a'), ('a','a'), ('a','a'), ('b','b'), ('a','a'), ('b','b')]
En gros les représentations se ressemblent.
Cependant, prenons une suite:
- [ ('a','a'), ('a','a'), ('a','a'), ('b','b'), ('a','a'), ('b','b')]
- appliquons X à chacun de ses éléments:
[ X('a','a'), X('a','a'), X('a','a'), X('b','b'), X('a','a'), X('b','b')]
Si X est une fonction: i = j => X(i) = X(j), chouette!
Une fonction, un objet... on n'est pas si loin.
Remplaçons X par list, str, tuple, un callable quelconque,...
Dédupliquez... Le "Si" devient indécis.
Cordialement
- W
Sans doute.
C'est le sujet juste au dessus (Pas de panique, j'ai effacer un post identique ).
34 posts sans réponse/réaction de kali38.
Je pense que nous devrions attendre.
@+
Edit:
Plus de code kali38 svp.
Merci d'utiliser le forum pour les questions techniques.
Bonjour,
Une question me taraude...
J'ai bien regardé la doc, mais je me sens un peu, disons... perplexe.
D'habitude, il y a toujours l'un d'entre vous pour proposer une méthode à base de regex.
Là, silence radio. Est-ce que par hasard ce ne serait pas possible ?
J'ai eu l'impression que le problème serait de déterminer quelle sous-liste extraire automatiquement sans la désigner nommément et de rechercher ensuite un doublon éventuel...
C'est quelque chose qui me tente depuis longtemps, cet apprentissage, mais ça n'a pas l'air d'être bien simple.
Cordialement à tous..
@+
En général les regex sont utilisés pour faire une recherche sur des Strings et non des listes, d'où une utilisation inadaptée.
Celui qui trouve sans chercher est celui qui a longtemps cherché sans trouver.(Bachelard)
La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information.(Einstein)
Euuuhhh… Comment dire… Les regex, c’est pour du texte*!
Là, on travaille sur une liste de listes, donc si on voulait utiliser les regex, ’faudrait la convertir en texte, appliquer la regex (avec un parsing partiel…), et reconvertir en liste –*bonjours le travail*!
Les regex sont un outil formidable, mais il faut savoir en user à bon escient*!
Rien n’empêche d'y jeter un œil
Edit:
str(liste) A toi de jouer yoshik. Cela fait un but plutôt sympa.
Merci d'utiliser le forum pour les questions techniques.
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager