A voir également:
- Agrégation dans des listes python
- Citizen code python avis - Accueil - Outils
- Liste déroulante dans excel - Guide
- Gertrude a préparé la liste des affaires à prendre pour l'excursion. juliette a modifié cette liste en utilisant le mode suivi des modifications proposé par le traitement de texte. - Guide
- Python est introuvable. exúcutez sans argument pour procúder ó l ✓ - Forum Python
2 réponses
heyquem
Messages postés
759
Date d'inscription
mercredi 17 juin 2009
Statut
Membre
Dernière intervention
29 décembre 2013
131
Modifié par heyquem le 11/12/2011 à 08:43
Modifié par heyquem le 11/12/2011 à 08:43
Bonjour,
Voici comment, en simplifiant progressivement ton code en utilisant les outils offerts par python, on arrive à condenser ton code:
Tu devrais aller sur le forum Python de developpez.com pour les questions sur ce langage, il y a une super équipe, sympa et très compétente.
Voici comment, en simplifiant progressivement ton code en utilisant les outils offerts par python, on arrive à condenser ton code:
#liste des identifiants des enregistrements ID= [1,2,1,2,4,3,3,3,5,5,1,5,5,1,2,2,2] #liste des valeurs associées enregistrements valeur=[1,4,15,16,23,27,48,50,55,67,90,101,200,250,260,270,300] #liste unique des identifiants IDunique=[1,2,3,4,5] #liste vide li3=[] for i in range(0, len(IDunique)): #boucle dans les ID uniques print 'i ==',i,' IDunique[i] ==',IDunique[i] li3.append([elt== IDunique[i] for elt in ID]) li4=li3[i] #créer une variable li4 accueillant les sous-listes print 'li4 ==',li4 li5=[]#créer une variable vide li5 for j in range(0, len(li4)):#boucle dans les sous-listes if li4[j]==True:#test si la valeur est True li5.append(valeur[j])#ajoute la valeur de liste valeur si la valeur est True print 'li5 ==',li5 moyenne= sum(li5)/len(li5) #calcul la moyenne des sous-listes minnus=min(li5)#calcul la valeur minimale maxus= max(li5)#calcul la valeur maximale print IDunique[i],' : ',moyenne, minnus,maxus #print l'IDunique, la moyenne, le min, le max print print '\n -1- #################################' for x in IDunique: li4 = [elt== x for elt in ID] print 'li4 ==',li4 li5=[] for j,y in enumerate(li4): if y: li5.append(valeur[j]) print 'li5 ==',li5 moyenne,minnus,maxus= sum(li5)/len(li5),min(li5),max(li5) print 'x de IDunique ==',x,' : ',moyenne, minnus,maxus print print '\n -2- #################################' for x in IDunique: li4 = [elt== x for elt in ID] print 'li4 ==',li4 li5 = [ valeur[j] for j,y in enumerate(li4) if y ] print 'li5 ==',li5 moyenne,minnus,maxus= sum(li5)/len(li5),min(li5),max(li5) print 'x de IDunique ==',x,' : ',moyenne, minnus,maxus print print '\n -3- #################################' for x in IDunique: li = [ valeur[j] for j,z in enumerate(ID) if z==x ] print 'li ==',li moyenne,minnus,maxus= sum(li)/len(li),min(li),max(li) print 'x de IDunique ==',x,' : ',moyenne, minnus,maxus print print '\n -4- #################################' for x in IDunique: li = [b for a,b in zip(ID,valeur) if a==x] print 'li ==',li tu = (x,sum(li)/len(li),min(li),max(li)) print '%s : %s , %s , %s' % tu print print '\n -5- #################################' for x in IDunique: li = [b for a,b in zip(ID,valeur) if a==x] tu = (x,sum(li)/len(li),min(li),max(li)) print '%4s : %7s , %7s , %7s' % tu print print '\n -6- #################################' def func(x, zozo = zip(ID,valeur)): li = [b for a,b in zip(ID,valeur) if a==x] return (x,sum(li)/len(li),min(li),max(li)) litu = [func(x) for x in IDunique] print '\n'.join('%4s : %7s , %7s , %7s' % tu for tu in litu)
Tu devrais aller sur le forum Python de developpez.com pour les questions sur ce langage, il y a une super équipe, sympa et très compétente.