[Python] Tri tableau

Tri tableau [Python] - Python - Programmation

Marsh Posté le 30-06-2014 à 19:26:57    

Bonjour,  
 
J'ai un petit souci avec un programme python  :(  
 
J'ai des données dans un fichier que je récupère, et j'ai besoin d'effectuer un tri.
 
Les données se présentent ainsi : j'ai plusieurs tableaux de tailles identiques, corrélés entre eux au niveau de l'indice, je fais un tri pour ne prendre que ceux qui m'intéressent.
 
Dans le tableau A, il y a plusieurs occurrences de nombres, j'ai besoin de sommer les éléments du tableau B par rapport à leur indice dans A et d'enregistrer cette valeur dans un nouveau tableau C.
 
tabA = [1,1,1,2,3,3]
tabB = [1,2,3,4,5,6]
 
et je veux tabC[0] = 6, car 1 apparait trois fois aux indices 0,1 et 2, donc je somme 1+2+3 dans B que j'enregistre dans C.
Ainsi tabC[1]= 4, tabC[2] = 11    soit tabC = [6,4,11]
 
J'aimerais faire ce tri dans ma boucle, c'est à dire pendant le 1er tri, voici ce que j'ai fais :
 

Code :
  1. currentID = 0
  2. tot = 0
  3.     for i in range(len(x)):
  4.      
  5.             if (is_not_in(x[i],y[i],z[i]) == True):    ### condition sur le 1er tri
  6.          
  7.                  newA.append(A[i])                         ### mes nouveaux tableaux une première fois trié
  8.                  newB.append(B[i])                         ###
  9.                  test = A[i]                           
  10.                  if(test == newA[i-1]):            ### Si l'élément précédent a la même valeur que celui qui vient juste après
  11.                          tot = tot + B[i-1] + B[i]          ### je les sommes
  12.                  else:
  13.                          C.append(tot)                         ### Sinon j'enregistre la valeur dans mon tableau C


 
Sauf que je suis out of range ici car à 0 il n'y a pas d'élément -1....
 
Un petit coup de main s'il vous plait ?  :jap:  :jap:

Reply

Marsh Posté le 30-06-2014 à 19:26:57   

Reply

Marsh Posté le 01-07-2014 à 07:44:41    

Réécris ton code en utilisant count(http://www.tutorialspoint.com/python/list_count.htm).


---------------
rule #1 : trust the python
Reply

Marsh Posté le 01-07-2014 à 08:36:17    

Salut,
 
Tout d'abord merci de ta réponse !
 
Je ne pense pas que je puisse utilisé count, car je ne connais pas les nombres qui sont dans mon tableau A, et je ne peux pas les tester tous un par un car il ne s'agit pas de simple entier comme dans mon exemple ! :(

Reply

Marsh Posté le 09-07-2014 à 12:38:51    

mais… pourquoi tu tries ton bordel à la main? Pourquoi tu tries tout court, d'ailleurs?

 
Code :
  1. import itertools
  2.  
  3. tabA = [1,1,1,2,3,3]
  4. tabB = [1,2,3,4,5,6]
  5.  
  6. result = [
  7.    sum(b for a, b in pairs)
  8.    for key, pairs in itertools.groupby(
  9.        zip(tabA, tabB), key=lambda item: item[0])
  10. ]
  11.  
  12.  
  13. assert result == [6, 4, 11]


Message édité par masklinn le 09-07-2014 à 12:46:09

---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed