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 28 29 30 31 32 33
| def indicedansliste(elem, lliste, indcol):
"""renvoie l'indice i (1er trouvé) de lliste si lliste[i][indcol]==elem
si non trouvé, renvoie -1.
"""
for i, x in enumerate(lliste):
if elem == x[indcol]:
return i
return -1
def elemcommuns(listes):
"""renvoie la liste des sous-listes ayant le nom en commun
"""
results = []
for sliste in listes[0]:
inds = [] # liste des indices trouvés
for i in range(1, len(listes)):
ind = indicedansliste(sliste[0], listes[i], 0)
if ind == -1:
break # le nom n'existe pas dans cette liste
inds.append(ind)
if ind!=-1:
# ici, on a trouvé un nom commun à toutes les listes
results += [sliste] + [listes[j+1][k] for j, k in enumerate(inds)]
return results
liste_1 = [["baba",1,25.2,36.4],["chouba",236,25.7,48.6],["touti",63,25.8,36.9],["quanti",27,58.4,12.9]]
liste_2 = [["baba",9,15.2,63.8],["touti",653,75.8,636.9],["quanti",287,588.4,126.9]]
liste_3 = [["baba",12,58.2,326.4],["chouba",23,2.8,4.6],["loula",65,36.1,2514.3],["touti",683,2.8,4.9],["quanti",7,5.4,2.9]]
listes = [liste_1, liste_2, liste_3]
print(elemcommuns(listes))
[['baba', 1, 25.2, 36.4], ['baba', 9, 15.2, 63.8], ['baba', 12, 58.2, 326.4], ['touti', 63, 25.8, 36.9], ['touti', 653, 75.8, 636.9], ['touti', 683, 2.8, 4.9], ['quanti', 27, 58.4, 12.9], ['quanti', 287, 588.4, 126.9], ['quanti', 7, 5.4, 2.9]] |