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 :

optimiser les boucles en python


Sujet :

Python

  1. #1
    Membre éclairé
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2011
    Messages
    422
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2011
    Messages : 422
    Par défaut optimiser les boucles en python
    Bonjour,

    j'essaye d'optimiser mes fonctions en python en suivant ce tuto , ce qui m’intéresse c'est d'optimiser mes boucles(cf section Loops) en python avec des déclarations plus compactes et performantes (ex:map)
    le problème c'est que je ne vois pas comment je peux utiliser des map ou déclarer les boucles à l’intérieur d' un tableau comme préconisé dans ce tutoriel. Est ce qu'il existe une manière de faire ?
    Voici une ébauche de code


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     for iphi in xrange(0, NBPHI):
            for ith in xrange(0, NBTHETA):
               for i in xrange(0, NLAM):
                tabFinal[0*NBTHETA*NBPHI*NLAM+i*NBTHETA*NBPHI+iphi*NBTHETA+ith] = (tabPhotonsTot[0*NBPHI*NBTHETA*NLAM+i*NBTHETA*NBPHI+ith*NBPHI+iphi] + tabPhotonsTot[1*NBPHI*NBTHETA*NLAM+i*NBTHETA*NBPHI+ith*NBPHI+iphi])

    Merci d'avance

  2. #2
    Expert confirmé

    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    4 307
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 307
    Par défaut
    Salut,

    Je ne vois pas trop à quoi peut te servir map() dans ce cas et tu ne peux pas grouper les itérations, elle sont imbriquées.

    Par contre ici:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
        tabFinal[0*NBTHETA*NBPHI*NLAM+i*NBTHETA*NBPHI+iphi*NBTHETA+ith]
    ceci 0*NBTHETA*NBPHI*NLAM est égal à zéro non ?

    Et tes indentations sont pour le moins inconsitantes.

  3. #3
    Expert confirmé

    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    4 307
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 307
    Par défaut
    Tu pourrais déjà commencer par clarifier.

    exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
        nl = NBPHI * NBTHETA * NLAM
        nb = NBTHETA * NBPHI
        for iphi in xrange(0, NBPHI):
            for ith in xrange(0, NBTHETA):
                for i in xrange(0, NLAM):
                    tabFinal[i * nb + iphi * NBTHETA + ith] = \
                            tabPhotonsTot[i * nb + ith * NBPHI + iphi] +\
                            tabPhotonsTot[nl + i * nb + ith * NBPHI + iphi]

Discussions similaires

  1. [MySQL] Optimisation du code sur les boucles
    Par izguit dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 07/08/2009, 15h05
  2. [Optimisation]Eviter les boucles imbriquées
    Par progfou dans le forum Algorithmes et structures de données
    Réponses: 8
    Dernier message: 09/03/2007, 17h03
  3. [Optimisation?] Déclaration de variable dans les boucles
    Par romaintaz dans le forum Langage
    Réponses: 5
    Dernier message: 11/08/2006, 16h08
  4. [SQL - procStock ] optimisation du code (éviter les boucles)
    Par luimême dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 06/10/2005, 17h22
  5. Optimiser les tables
    Par blizar dans le forum PostgreSQL
    Réponses: 3
    Dernier message: 04/06/2004, 08h34

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