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 :

combiné deux critère pour la sélection


Sujet :

Python

  1. #1
    Membre régulier
    Femme Profil pro
    étudiante chercheuse
    Inscrit en
    Septembre 2013
    Messages
    274
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : étudiante chercheuse
    Secteur : Enseignement

    Informations forums :
    Inscription : Septembre 2013
    Messages : 274
    Points : 101
    Points
    101
    Par défaut combiné deux critère pour la sélection
    Bonjour,
    y a t-il une manière pour faire une sélection couplé selon 2 critère d'une sous liste à partir d'une liste:
    par exemple :
    sous_chaine : [(1, 8), (1, 6), (8, 6), (1, 8, 6)]
    ayant comme valeur respectivement
    density_sous_chaine: [0.55, 0.35, 0.5, 0.4]
    les deux critère sont la valeur min density_sous_chaine avec le max d'élement de la sous : içi ça convient à (1,8,6)!!

  2. #2
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    1 046
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 1 046
    Points : 1 376
    Points
    1 376
    Par défaut
    En filtrant sur un zip()

  3. #3
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 283
    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 283
    Points : 36 770
    Points
    36 770
    Par défaut
    Salut,

    Citation Envoyé par FATENMRABET Voir le message
    y a t-il une manière pour faire une sélection couplé selon 2 critère d'une sous liste à partir d'une liste:
    Oui, çà s'appelle "programmer":
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    >>> sc = [(1, 8), (1, 6), (8, 6), (1, 8, 6)]
    >>> dsc = [0.55, 0.35, 0.5, 0.4]
    >>> min_ = dsc[0]
    >>> item = sc[0]
    >>> for i, v in enumerate(dsc):
    ...     if v < min_:
    ...        item = sc[i]
    ...     elif v == min_:
    ...        if len(sc[i]) > len(item):
    ...           item = sc[i]
    ...
    >>> item
    (1, 8, 6)
    Ce qui suppose, au départ, une idée d'algorithme comme chercher la valeur plus petite et comparer la longueur des items correspondants dans l'autre liste... et (savoir) le traduire en Python.

    Après, il y a peut être des fonctionnalités de Python pour faire la même chose en moins de lignes ou sortant un résultat plus vite en consommant moins de CPU.

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

  4. #4
    Membre régulier
    Femme Profil pro
    étudiante chercheuse
    Inscrit en
    Septembre 2013
    Messages
    274
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : étudiante chercheuse
    Secteur : Enseignement

    Informations forums :
    Inscription : Septembre 2013
    Messages : 274
    Points : 101
    Points
    101
    Par défaut
    Citation Envoyé par josmiley Voir le message
    En filtrant sur un zip()
    comment filtrer sur un zip?

  5. #5
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    1 046
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 1 046
    Points : 1 376
    Points
    1 376
    Par défaut
    en parcourant le zip() tout en vérifiant les critères.

  6. #6
    Expert éminent
    Avatar de tyrtamos
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2007
    Messages
    4 461
    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 461
    Points : 9 248
    Points
    9 248
    Billets dans le blog
    6
    Par défaut
    Bonjour

    Citation Envoyé par FATENMRABET Voir le message
    comment filtrer sur un zip?
    Comme ça:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    for s, d in zip(sc, dsc):
        # ajouter condition de filtrage
        print(s, d)
    Ce qui affiche:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    (1, 8) 0.55
    (1, 6) 0.35
    (8, 6) 0.5
    (1, 8, 6) 0.4
    Si c'est utile, on peut ajouter la connaissance de l'index:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    for i, (s, d) in enumerate(zip(sc, dsc)):
        # ajouter condition de filtrage
        print(i, s, d)
    Mais voilà une autre solution, en passant par le tri indexé de dsc:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    sc = [(1, 8), (1, 6), (8, 6), (1, 8, 6)] 
    dsc = [0.55, 0.35, 0.5, 0.4]
     
    # fait un tri indexé de dsc
    index = list(range(0, len(dsc))) # => [0,1,2,3]
    index.sort(key=lambda elem: dsc[elem]) # => [1, 3, 2, 0]
     
    # trouve le mini de dsc qui correspond au maxi du nombre d'ééments des sous-listes de sc
    maxelem = 0
    for i in index:
        if len(sc[i])>maxelem:
            maxelem = len(sc[i])
            imaxelem = i
     
    # résultat:
    print(sc[imaxelem], dsc[imaxelem])
    Ce qui affiche:

    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

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

Discussions similaires

  1. [Débutant] Combiner deux classes pour n'en faire qu'une
    Par Domi2 dans le forum Mise en page CSS
    Réponses: 3
    Dernier message: 12/04/2015, 17h10
  2. [MySQL] combiner deux requetes pour affichage d'un menu automatique
    Par ledisciple dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 25/07/2012, 17h14
  3. recherche multi critere difference entre deux montant pour critère
    Par popofpopof dans le forum Requêtes et SQL.
    Réponses: 5
    Dernier message: 01/09/2007, 21h44
  4. Réponses: 3
    Dernier message: 16/06/2006, 16h17
  5. Sélection sur deux critères
    Par Hbenne dans le forum Access
    Réponses: 2
    Dernier message: 07/04/2006, 16h18

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