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 :

nombre variant de boucles "for" imbriquées [Python 3.X]


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2013
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2013
    Messages : 7
    Par défaut nombre variant de boucles "for" imbriquées
    Bonjour à tous,

    Non, je vous vois venir, je ne pense pas que itertools puisse résoudre mon problème

    Rentrons dans le vif:
    • Je souhaite simuler le comportement de pompes centrifuges avec ou sans variateur de vitesse sur plusieurs stations de pompage.
    • Pour cela j'ai crée un objet Station_pompage qui regroupe un ou plusieurs objet Pompe_centrifuge. J'ai 6 stations qui ont chacune un nombre différents de pompes.
    • Chaque pompe centrifuge a sa propre plage de vitesse autorisée (float).


    Le but est de tester l'association toutes les vitesses possible sur une station de pompage (dénombrement). Si ma station a 5 pompes cela revient, avec la seule technique que j'ai trouvé pour l'instant, à faire 5 boucles "for" imbriquées. Pour duper Python lorsque j'ai moins que 5 pompes sur ma station, je mets des valeurs vides dans les listes utilisées pour ne pas avoir de problème de "out of range" (car vecteur vitesse a deux dimensions avec sa deuxième dimension égale au nombre de pompes).


    Je ne pense pas itertools convienne car le dénombrement, d'après ce que j'ai compris ne se fait que avec des listes identiques.

    Avez vous une idée pour faire cela d'une meilleure manière ?

    D'avance merci beaucoup.

    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
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    class StationPompage():
        """ Définit le comportement d'une station de pompage comportant autant de pompe que listé dans liste_pompe """
        def __init__(self,nom,position,liste_pompe,canalisation,mini_arrivee=2.5):
            self.nom=nom
            self.position=position
            self.liste_pompe=liste_pompe
            self.canalisation=canalisation
            self.mini_arrivee=mini_arrivee    
     
        """Renvoie le vecteur de vitesse possible par les pompes de la station. 
        Un vecteur different par pompe""" 
        def vecteur_vitesse(self,pas=10):
            vecteur_vitesse=[]
            for pompe in self.liste_pompe:
                vecteur_vitesse.append(pompe.calcul_vitesses_possibles(pas))
            vecteur_vitesse.append([0])
            vecteur_vitesse.append([0])
            vecteur_vitesse.append([0])
            vecteur_vitesse.append([0])
            vecteur_vitesse.append([0])
            return vecteur_vitesse
     
        """En fonction des vitesses possibles par pompe on teste le comportement de la somme des pompes """
        def hmt(self,nombre_variateur,hmt_voulue,pas=10):
            i=0
            vecteur_vitesse=self.vecteur_vitesse(pas)
            for v1 in vecteur_vitesse[0]:
                for v2 in vecteur_vitesse[1]:
                    for v3 in vecteur_vitesse[2]:
                        for v4 in vecteur_vitesse[3]:
                            for v5 in vecteur_vitesse[4]:
                                #la je teste la pression

  2. #2
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 738
    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 738
    Par défaut
    Salut,

    Citation Envoyé par heiriquent Voir le message
    Je ne pense pas itertools convienne car le dénombrement, d'après ce que j'ai compris ne se fait que avec des listes identiques.
    itertools est le nom d'un package de la bibliothèque standard qui contient plein de fonctions interessantes.
    Dans votre cas, je regarderai product.

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

  3. #3
    Membre Expert

    Homme Profil pro
    Ingénieur calcul scientifique
    Inscrit en
    Mars 2013
    Messages
    1 229
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur calcul scientifique

    Informations forums :
    Inscription : Mars 2013
    Messages : 1 229
    Par défaut
    Citation Envoyé par heiriquent Voir le message
    Bonjour à tous,
    Je ne pense pas itertools convienne car le dénombrement, d'après ce que j'ai compris ne se fait que avec des listes identiques.
    Ah bon ? Regarde ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    from itertools import product
    a = [['a','b'], ['c','d'],['e','f','g']]
    print( list(product(*a)) )
    Donc dans ton cas, ca semble très bien convenir.

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2013
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2013
    Messages : 7
    Par défaut Mea Culpa
    Bonjour,

    Merci de vos réponses, encore une fois j'ai lu la doc trop vite .
    C'est exactement ce que je voulais.

    Merci beaucoup.

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 24/05/2007, 17h56
  2. Comment optimiser plusieurs boucles FOR-END imbriquées
    Par totoc1001 dans le forum MATLAB
    Réponses: 26
    Dernier message: 13/05/2007, 17h59

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