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 :

module de comparaisons


Sujet :

Python

  1. #1
    Membre émérite
    Avatar de Jasmine80
    Femme Profil pro
    Bioinformaticienne
    Inscrit en
    Octobre 2006
    Messages
    3 157
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 44
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Bioinformaticienne
    Secteur : Santé

    Informations forums :
    Inscription : Octobre 2006
    Messages : 3 157
    Points : 2 673
    Points
    2 673
    Par défaut module de comparaisons
    Bonjour à tous,

    Est-ce bien de faire des recherche de modules ici : https://pypi.python.org/pypi?%3Aacti...&submit=search
    J'ai une liste simple et j'aimerais connaitre les différents éléments de celle-ci. Par exemple, si j'ai 5 fois A, 3 fois B et 2 fois C, j'aimerais en extraire la liste ('A', 'B', 'C') sans doublons.
    Si j'ai 2 listes simples, j'aimerais en connaitre les 'intersections', les éléments se trouvant dans la première, mais pas la seconde et vice-versa.

    Connaissez-vous des modules pour cela ?

    D'avance merci et bonne journée,
    -- Jasmine --

  2. #2
    Membre émérite
    Avatar de Jasmine80
    Femme Profil pro
    Bioinformaticienne
    Inscrit en
    Octobre 2006
    Messages
    3 157
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 44
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Bioinformaticienne
    Secteur : Santé

    Informations forums :
    Inscription : Octobre 2006
    Messages : 3 157
    Points : 2 673
    Points
    2 673
    Par défaut
    Pour la première question, j'ai trouvé la fonction set().
    -- Jasmine --

  3. #3
    Membre averti Avatar de cervo
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2012
    Messages
    220
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2012
    Messages : 220
    Points : 388
    Points
    388
    Par défaut

    Tu peux utiliser set(sequence1) - set(sequence2) pour trouver les element de sequence1 qui sont pas dqns sequence2 ou comme je l'aime [item for item in sequence1 if item not in sequence2] et ainsi de suite. set() est pareil qu'aux ensembles en maths, tout ce que tu peux faire faire aux ensembles en math s'appliquent a set()

    PS: en utilisant set() t'auras pas d'ordre dans tes ensembles mais comme je le dis toujours c'est le resultat qui importe
    Toute chose dépend de la valeur qu'on lui attribue !

  4. #4
    Membre émérite
    Avatar de Jasmine80
    Femme Profil pro
    Bioinformaticienne
    Inscrit en
    Octobre 2006
    Messages
    3 157
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 44
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Bioinformaticienne
    Secteur : Santé

    Informations forums :
    Inscription : Octobre 2006
    Messages : 3 157
    Points : 2 673
    Points
    2 673
    Par défaut
    Bonjour Cervo et merci pour ta réponse rapide, synthétique et très utile. Je vais tester ça.

    Quel moteur de recherches utilises-tu pour tes modules 'complémentaires'? Et pour les fontions built-in ?
    -- Jasmine --

  5. #5
    Expert éminent
    Avatar de tyrtamos
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2007
    Messages
    4 462
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2007
    Messages : 4 462
    Points : 9 249
    Points
    9 249
    Billets dans le blog
    6
    Par défaut
    Bonjour,

    La fonction set est très intéressante, parce qu'elle permet de faire facilement des opérations courantes dans les ensembles.

    Exemples:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    z=['A', 'A', 'B', 'C', 'E', 'A', 'C', 'D']
    print(list(set(z)))
    ['A', 'D', 'B', 'C', 'E']
    Avec:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    x=set(['A', 'B', 'C'])
    y=set(['C', 'D', 'E'])
    Appartenance:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    print('A' in x)
    True
    print('A' in y)
    False
    Intersection:

    Union:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    print(x|y)
    {'B', 'C', 'E', 'A', 'D'}
    Différences:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    print(x-y)
    {'A', 'B'}
     
    print(y-x)
    {'D', 'E'}
    Une fois obtenu sous forme de "set", on peut toujours convertir en liste avec list(), et trier cette liste avec la méthode .sort() ou la fonction sorted():

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    print(sorted(list(x|y)))
    ['A', 'B', 'C', 'D', 'E']
    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

  6. #6
    Membre averti Avatar de cervo
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2012
    Messages
    220
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2012
    Messages : 220
    Points : 388
    Points
    388
    Par défaut

    @Jasmine , j'utilise pas de moteurs de recherche partiuliers, a vrai dire je suis comme qui dirait un marin sans boussole je navigue au gre du vent . Serieusement j'utilise pas de moteurs de recherhe, uniquement la doc python que je traine avec moi
    @Tyrtamos: cela ressemble a de l'artillerie lourde ce que t'as fait. la totale .... I love this guy !
    Toute chose dépend de la valeur qu'on lui attribue !

  7. #7
    Expert éminent Avatar de CosmoKnacki
    Homme Profil pro
    Justicier interdimensionnel
    Inscrit en
    Mars 2009
    Messages
    2 858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Justicier interdimensionnel

    Informations forums :
    Inscription : Mars 2009
    Messages : 2 858
    Points : 6 556
    Points
    6 556
    Par défaut
    Citation Envoyé par Jasmine80 Voir le message
    Est-ce bien de faire des recherche de modules ici : https://pypi.python.org/pypi?%3Aacti...&submit=search
    Oui, il y a d'excellents modules. Bien entendu, tu dois voir si ce que tu cherches à faire n'est pas déjà possible directement avec le langage (c'est le cas ici) ou avec les modules de base.


    Citation Envoyé par Jasmine80
    Pour la première question, j'ai trouvé la fonction set().
    C'est ça, par contre set() définie un ensemble dans lequel la notion d'ordre présent dans la liste n'existe plus.

    Si j'ai 2 listes simples, j'aimerais en connaitre les 'intersections', les éléments se trouvant dans la première, mais pas la seconde et vice-versa.
    Si je comprends bien tu cherches à obtenir les éléments que les listes n'ont pas en commun (le complémentaire de l'intersection). Pour cela tu peux faire un XOR entre deux ensembles:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    >>> set(['A', 'B', 'C', 'D'])^set(['B', 'C', 'D', 'E'])
    set(['A', 'E'])
    Sinon pour l'intersection (AND):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    >>> set(['A', 'B', 'C', 'D'])&set(['B', 'C', 'D', 'E'])
    set(['B', 'C', 'D'])
    L'union (OR):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    >>> set(['A', 'B', 'C', 'D'])|set(['B', 'C', 'D', 'E'])
    set(['A', 'C', 'B', 'E', 'D'])
    La différence:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    >>> set(['A', 'B', 'C', 'D'])-set(['B', 'C', 'D', 'E'])
    set(['A'])

    Oops, j'ai été un peu lent à écrire.
    Brachygobius xanthozonus
    Ctenobrycon Gymnocorymbus

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

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

    Informations forums :
    Inscription : Novembre 2010
    Messages : 3 035
    Points : 8 400
    Points
    8 400
    Par défaut
    Citation Envoyé par Jasmine80 Voir le message
    Est-ce bien de faire des recherche de modules ici : [url]https://pypi.python.org/pypi?%3Aaction=search&term=compare+list&submit=search[/url
    perso, sous Linux je regarde toujours en priorité dans les dépôts si une version est packagée, au delà - et c'est valable sous Windows aussi - j'utilise pip qui fonctionne un peu sur le même principe que le CPAN de Perl, en l'occurrence des commandes simples comme pip search sur la description d'un module par exemple ou pip install, pip list etc.

  9. #9
    Membre émérite
    Avatar de Jasmine80
    Femme Profil pro
    Bioinformaticienne
    Inscrit en
    Octobre 2006
    Messages
    3 157
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 44
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Bioinformaticienne
    Secteur : Santé

    Informations forums :
    Inscription : Octobre 2006
    Messages : 3 157
    Points : 2 673
    Points
    2 673
    Par défaut
    Je vous remercie pour vos commentaires ... c'est vraiment intéressant ce set(), j'ai de quoi étudier cette après-midi. Merci en particulier pour les détails au sujet de set(), qui vont bien me servir.
    -- Jasmine --

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

Discussions similaires

  1. Comparaison de code dans plusieurs modules
    Par jbaudin dans le forum Access
    Réponses: 2
    Dernier message: 03/10/2005, 11h47
  2. comparaison de 2 dates
    Par eisti dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 11/08/2003, 11h33
  3. Comparaison de fichier
    Par danzerg dans le forum Langage
    Réponses: 2
    Dernier message: 21/02/2003, 11h49
  4. Comparaison JBuilder avec Sun ONE Studio
    Par chichos dans le forum EDI et Outils pour Java
    Réponses: 4
    Dernier message: 13/11/2002, 15h08
  5. Comparaison d'un registre 8 bits avec une variable 32 bits
    Par tupperware dans le forum x86 32-bits / 64-bits
    Réponses: 3
    Dernier message: 15/10/2002, 10h25

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