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 :

comparaison d'une égalité entre tuple (ou liste si impossible entre tuple) avec items pas ordonnées


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Femme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Juin 2022
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information

    Informations forums :
    Inscription : Juin 2022
    Messages : 36
    Par défaut comparaison d'une égalité entre tuple (ou liste si impossible entre tuple) avec items pas ordonnées
    bonjour
    j'ai compris qu'un tuple n'a pas d'ordre, contrairement à une liste.

    je voudrais comparer deux tuples genre
    t1=("aa","zz","ee")
    t2=("aa","ee","zz")

    print(t1==t2) me donne false

    mais si j'ai ca :
    t1=("aa","zz","ee")
    t3=("aa","zz","ee")

    print(t1==t3) me donne true

    j'ai des tuples mais je ne peux pas garantir que les élements soit ecris dans le meme ordre.
    Comment faire pour vérifier que 2 tuples ont les memes élements, meme sis c'est pas dans le bon ordre?

    je dois les transformer en liste et les ordonner?

  2. #2
    Membre Expert
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2003
    Messages
    1 603
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2003
    Messages : 1 603
    Par défaut
    Bonjour.

    Tu peux trier le contenu de tes tuples.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    if sorted(t1) == sorted(t2):
        # do something
    Mais pour le coup, les valeurs seront triées dans tes deux tuples.

    Si ce n'est pas ce que tu cherches, tu peux par exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    if len(list(set(t1+t2))) == len(t1):
        # tuples are identical, do something

  3. #3
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 815
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 815
    Billets dans le blog
    1
    Par défaut
    Bonjour
    Citation Envoyé par sqlbeginner Voir le message
    j'ai compris qu'un tuple n'a pas d'ordre, contrairement à une liste.
    Ah? Intéressant. Et d'où sors-tu cette énormité?

    Citation Envoyé par sqlbeginner Voir le message
    je dois les transformer en liste et les ordonner?
    Non, te suffit d'ordonner les tuples. sorted(t1) == sorted(t2).

    Citation Envoyé par Arioch Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    if len(list(set(t1+t2))) == len(t1):
        # tuples are identical, do something
    Pas besoin de convertir en liste pour demander len(). Mais si t1 ou t2 contiennent des éléments non hashables, pas de set() possible. Et s'ils sont hashables mais qu'ils sont égaux avec doublons, style ("aa", "aa", "zz"), ton évaluation les verra inégaux ; tandis qu'un simple set(t1) == set(t2), lui, les voit égaux même s'ils ne sont pas dans le même ordre. Et ça n'enlève pas le souci de l'impossibilité possible d'un set sur t1 ou t2.
    A mon avis le sorted() reste la meilleure solution.
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  4. #4
    Membre averti
    Femme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Juin 2022
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information

    Informations forums :
    Inscription : Juin 2022
    Messages : 36
    Par défaut
    Citation Envoyé par Sve@r Voir le message
    Bonjour

    Ah? Intéressant. Et d'où sors-tu cette énormité?
    de mémoire...
    mais je confonds, y a pas une variable dans python dont les items ne sont pas ordonnées, ce qui veut dire qu'on ne peut pas y accéder avec un crocher []

  5. #5
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 815
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 815
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par sqlbeginner Voir le message
    y a pas une variable dans python dont les items ne sont pas ordonnées, ce qui veut dire qu'on ne peut pas y accéder avec un crochet []
    Oui, les ensembles (set()). Et ce n'est pas une variable mais un type (la variable c'est la zone mémoire permettant de stocker une valeur d'un certain type).
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  6. #6
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 696
    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 696
    Par défaut
    Citation Envoyé par sqlbeginner Voir le message
    de mémoire...
    mais je confonds, y a pas une variable dans python dont les items ne sont pas ordonnées, ce qui veut dire qu'on ne peut pas y accéder avec un crocher []
    Un type d'objet comme set ou dict peut être, une variable non.
    Si on accéder aux valeurs via un index ne fera pas que les items sont ordonnés - un tri oui (pour autant qu'une relation d'ordre soit définie entre les items).
    De plus, les crochets acceptent autre chose que des indices (des entiers) comme avec les dictionnaires par exemple.

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

  7. #7
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 696
    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 696
    Par défaut
    Citation Envoyé par sqlbeginner Voir le message
    j'ai compris qu'un tuple n'a pas d'ordre, contrairement à une liste.
    Un tuple à la même relation d'ordre qu'une liste ou qu'une chaine de caractères.
    Mais tel que vous exposez votre problème peut être qu'un set (ensemble qui n'a pas d'ordre) serait plus appropriés qu'un tuple (trié ou pas).

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

Discussions similaires

  1. Réponses: 6
    Dernier message: 27/09/2011, 22h57
  2. Réponses: 2
    Dernier message: 07/11/2007, 18h19
  3. Copie d'une table entre bases, avec un champs long
    Par LaVaZza dans le forum Oracle
    Réponses: 6
    Dernier message: 18/04/2006, 16h58
  4. Comparaison d'une liste de string à un string
    Par maxazac dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 19/10/2005, 15h39

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