Bonjour,
Je dispose de 2 Listes, Lf et Li, composées chacune de groupes de 4 lettres (plusieurs milliers) en plusieurs "exemplaires" parfois dans chacune.
Ex:
Je voudrais fondre ces deux listes en une liste de tuples (triés) en éliminant les doublons et en gardant le nombre total d'exemplaires de chaque :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 >>> Lf=['ACBD', 'AABB', 'ABBB','ACBD','ACBD','ABBB'] >>> Li=['ACBD', 'AAAB', 'AABB','ACBD','ACBD','AABB']
J'ai trouvé :
Code : Sélectionner tout - Visualiser dans une fenêtre à part Lt=[('AAAB',1),('AABB',3),('ABBB',2),('ACBD',6)]
- comment éliminer les doublons,
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 >>> Lt= list(set(Lf)) Lt.sort()
- je saurais compter le nombre d'occurences de chaque groupe dans chaque fichier...
Mais je ne sais pas comment combiner les deux, alors j'ai créé une fonction:
Mais je trouve ça lourd, emprunté et "naïf"... Alors je me dis qu'il y a certainement plus sioux et plus rapide...
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 def tri_et_compte(Lf, nb): no,L=0,[] for i in xrange(nb): x1,x2,x3=Lf[i-1],Lf[i],Lf[i+1] if x2 == x3: no+=1 else: if x2 == x1: no+=1 L.append((x2,no)) no=0 else : L.append((x2,1)) no=0 nl=len(L) return L,nl Lf=['ACBD', 'AABB', 'ABBB','ACBD','ACBD','ABBB'] Li=['ACBD', 'AAAB', 'AABB','ACBD','ACBD','AABB'] Lf+=Li Lf.sort() nbl=len(Lf) Lf.append('>>>>') L=[] L,nl=tri_et_compte(Lf,nbl) print L
Donc, vos suggestions sont les bienvenues...
Merci d'avance
Partager