IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Python Discussion :

Combinaisons multiples entre listes


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 17
    Par défaut Combinaisons multiples entre listes
    Bonjour,
    Je cherche à pouvoir générer toutes les écritures possibles d'une adresse.
    Je m'explique :
    Prenons "001, Avenue du Général de Gaulle"
    Le 001 peut s'écrire 001 ou 1
    Avenue peut s'écrire "Av", "Av.", "avenue", "av", "av."
    Général peut s'écrire "général", "gal", "Gal"
    "Gaulle" peut s'écrire "gaulle", "gaule" (pour ceux qui ne sont pas doués en histoire ;-)...

    Aussi, je décompose cette adresse en [('001','1'),('Avenue','Av','Av.','avenue','av','av.'),('du',''),('Général','général','gal','Gal'),('de','De',''),('Gaulle','gaulle','gaule')]
    Je cherche à faire la liste de toutes les combinaisons de liste :
    001 Avenue du Général de Gaulle
    001 Avenue du Général de gaule
    ...

    Auriez vous une piste ? Sachant que mon problème est que le nombre de listes du tuple peut varier de 1 à n et que chaque liste également..

    Merci pour votre aide !
    Jérôme

  2. #2
    Membre Expert Avatar de plxpy
    Homme Profil pro
    Ingénieur géographe
    Inscrit en
    Janvier 2009
    Messages
    792
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur géographe
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Janvier 2009
    Messages : 792
    Par défaut
    Bonjour

    Je pense tout de suite à itertools.

    Sans être sûr que ton approche soit la bonne.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 17
    Par défaut
    ok, merci je vais regarder ce module.
    Je vois que j'ai affaire à un géographe ;-)
    Le problème est que j'ai une appli un peu restrictive au niveau des fonctionnalités de recherches, donc la seule solution, en attendant l'amélioration de l'outil pour lequel je n'ai pas accès au code :-( est de contourner le problème pour permettre à l'utilisateur de disposer d'un maximum de taux de réponse.
    Après, je suis ouvert à toute proposition plus pertinente pour atteindre mon objectif :-)

  4. #4
    Membre Expert Avatar de plxpy
    Homme Profil pro
    Ingénieur géographe
    Inscrit en
    Janvier 2009
    Messages
    792
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur géographe
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Janvier 2009
    Messages : 792
    Par défaut
    Citation Envoyé par sigtopo Voir le message
    Je vois que j'ai affaire à un géographe ;-)
    oui, mais ... Je suis géographe "petites échelles".

    Mon terrain de jeu, c'est le degré-carré (à la louche 100x100 km) donc les adresses ...

    Ton problème, c'est un mix entre la géographie et les chaines de caractères. J'ai peur de ne pas être d'un grand secours.

    Mais je suis le thread !

  5. #5
    Membre très actif Avatar de fifafou
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2016
    Messages
    173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 23
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Janvier 2016
    Messages : 173
    Par défaut
    tu peux faire un fonction qui fais les combinaisons avec deux tuple de chaine et puis tu l'applique pour le premier élément et le deuxième,le résultat et le troisième,le résultat et le quatrième...
    Tu peux même le faire en récursif pour faire plus joli.
    (coder c'est de l'art)

  6. #6
    Expert confirmé Avatar de BufferBob
    Profil pro
    responsable R&D vidage de truites
    Inscrit en
    Novembre 2010
    Messages
    3 041
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : responsable R&D vidage de truites

    Informations forums :
    Inscription : Novembre 2010
    Messages : 3 041
    Par défaut
    salut,

    plxpy a raison, itertools possède la fonction product() qui fait ce que tu cherches à faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    >>> list(itertools.product(['A', 'B', 'C'], ['1', '2', '3']))
    [('A', '1'), ('A', '2'), ('A', '3'), ('B', '1'), ('B', '2'), ('B', '3'), ('C', '1'), ('C', '2'), ('C', '3')]
    >>> map(''.join, _)
    ['A1', 'A2', 'A3', 'B1', 'B2', 'B3', 'C1', 'C2', 'C3']

+ Répondre à la discussion
Cette discussion est résolue.

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo