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 :

calculer la somme d'une liste avec reduce()


Sujet :

Python

  1. #1
    Membre averti
    Femme Profil pro
    Administrateur de base de données
    Inscrit en
    Septembre 2018
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 48
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Septembre 2018
    Messages : 27
    Par défaut calculer la somme d'une liste avec reduce()
    Bonjour,

    Pour calculer la somme d'une liste, j'utilise reduce(). Dans le 1er code qui fonctionne bien, la fonction a deux arguments. Mais dans le 2e code, je donne 2 arguments pour la fonction, il y a des erreurs. Merci de votre aide.

    Code 1 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    def somme(x,y):
    	return x + y
     
    s = [8,6,2,3]
    print (reduce(somme,s))
    Code 2 :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    def somme(liste):
        resul = 0
        for i in range(len(liste)):
            if i < len(liste):
                print (resul = resul + liste[i])   
        return None
    s = [8,6,2,3]
    print (reduce(somme,s)

  2. #2
    Membre émérite

    Homme Profil pro
    Ingénieur
    Inscrit en
    Août 2010
    Messages
    662
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Août 2010
    Messages : 662
    Par défaut
    Salut,

    reduce() prend, il me semble, toujours une fonction à deux paramètres en entrée et retourne une valeur. Son fonctionnement est un peu particulier. Il (ou elle) prend les deux premières valeurs d'une liste, puis le résultat avec la troisième valeur de la liste, puis le résultat avec la quatrième valeur, etc...

    Dans votre deuxième exemple vous passez un seul argument. Et non deux (x et y dans le cas 1).

    J

  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
    Avec le 2eme code vous n'avez pas besoin de reduce, puisque l'itération est faite à l'intérieur de la fonction.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    def somme(liste):
        resul = 0
        for element in liste : 
            resul += element 
        return resul
    s = [8,6,2,3]
    print (somme(s))

Discussions similaires

  1. Calculer la somme dan une requête SQL avec JTable
    Par kazan dans le forum Composants
    Réponses: 1
    Dernier message: 30/05/2012, 19h58
  2. Réponses: 0
    Dernier message: 26/05/2008, 16h41
  3. [MFC] creer une liste avec des check????
    Par ginounet dans le forum MFC
    Réponses: 4
    Dernier message: 16/06/2004, 11h47
  4. [CR 8.5] Calculer la somme d'une somme
    Par Frederic Vincent dans le forum Formules
    Réponses: 4
    Dernier message: 12/02/2004, 17h53

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