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 :

intersections d'ensembles contenus dans une liste.


Sujet :

Python

  1. #1
    Membre régulier
    Homme Profil pro
    retraité
    Inscrit en
    Septembre 2010
    Messages
    102
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : retraité
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Septembre 2010
    Messages : 102
    Points : 71
    Points
    71
    Par défaut intersections d'ensembles contenus dans une liste.
    Salut à tous,
    Une liste contient un nombre indéterminé à l'avance d'ensembles contenant des nombres (3 ensembles dans l'exemple).
    Je souhaiterais isoler les éléments communs à tous ces ensembles (intersection).
    L'itération sur la liste, comme dans le code ci-après, fonctionne mais il n'y a aucun résultat de l'intersection.
    Merci d'avance pour un conseil.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    """ exo sur les ensembles """
    listNb = [{1, 2, 3, 6}, {1, 2, 3, 4, 6, 12}, {1, 2, 3, 6, 9, 18}]
    len_listNb = len(listNb)
    commun = set()
     
    for i in range(len_listNb):
        commun = commun & listNb[i] ; print("commun:", commun)
     
    commun = sorted(commun)
    print("les valeurs communes sont", commun)

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 287
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 287
    Points : 36 776
    Points
    36 776
    Par défaut
    Salut,

    Relisez votre code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    commun = set()
     
    for i in range(len_listNb):
        commun = commun & listNb[i]
    commun étant l'ensemble vide, son intersection avec un peu moins que rien sera vide et deviendra le "commun" utilisé à l'itération suivante.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  3. #3
    Membre régulier
    Homme Profil pro
    retraité
    Inscrit en
    Septembre 2010
    Messages
    102
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : retraité
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Septembre 2010
    Messages : 102
    Points : 71
    Points
    71
    Par défaut
    Salut à tous et à Wiztricks en particulier.

    Si avant la boucle, je donne une première valeur à 'commun', celle de la première liste: listNb[0],
    le résultat est correct.
    Mais, es-ce une solution 'pythoniquement' acceptable?
    Compte tenu du nombre de fonctions relatives aux ensembles, j'étais persuadé qu'il en existait une dédiée.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    """ exo sur les ensembles """
    listNb = [{1, 2, 3, 6}, {1, 2, 3, 4, 6, 12}, {1, 2, 3, 6, 9, 18}]
    len_listNb = len(listNb)
    # commun = set()
    commun = listNb[0]
    for i in range(1, len_listNb):
        commun = commun & listNb[i] ; print("commun:", commun)
     
    commun = sorted(commun)
    print("les valeurs communes sont", commun)

  4. #4
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 287
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 287
    Points : 36 776
    Points
    36 776
    Par défaut
    Salut,

    Citation Envoyé par luc pic Voir le message
    Mais, es-ce une solution 'pythoniquement' acceptable?
    Compte tenu du nombre de fonctions relatives aux ensembles, j'étais persuadé qu'il en existait une dédiée.
    Il suffit d'utiliser set.intersection:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    >> listNb = [{1, 2, 3, 6}, {1, 2, 3, 4, 6, 12}, {1, 2, 3, 6, 9, 18}]
    >>> set.intersection(*listNb)
    {1, 2, 3, 6}
    >>>
    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  5. #5
    Membre régulier
    Homme Profil pro
    retraité
    Inscrit en
    Septembre 2010
    Messages
    102
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : retraité
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Septembre 2010
    Messages : 102
    Points : 71
    Points
    71
    Par défaut
    Salut à tous et merci à W en particulier,
    C'est exactement ce que je cherchais.
    Il me semblait bien avoir déjà vu ce type de code quelque part mais je n'arrivais pas à remettre la main dessus.
    Encore merci.

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 21/12/2017, 08h06
  2. [XL-MAC 2011] Condition sur le nombre d'items contenus dans une liste déroulante
    Par xixil dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 27/03/2013, 18h55
  3. Réponses: 3
    Dernier message: 08/10/2010, 12h42
  4. nombre de fichiers de repertoires contenus dans une liste
    Par morty dans le forum Général Python
    Réponses: 3
    Dernier message: 12/06/2009, 01h46
  5. Réponses: 9
    Dernier message: 24/06/2008, 09h45

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