Bonjour,
sous python 2.5, je dois créer une fonction qui, à partir d'une liste de listes, doit renvoyer l'indice de la sous-liste contenant un certain élément.
Ex.:
dans
tab=[[4229.0], [4099.0, 4100.0], [7861.0], [9896.0], [4505.0, 9948.0, 9956.0], [3729.0, 8473.0]]
(tab, non triée, peut contenir + d'1 million de sous-listes triées de longueurs diverses)
pour l'élément
nb=9948.0
ma fonction doit renvoyer
position=4
Ma première idée est:
Mais c'est très très lent, et ça semble saturer pour un grand nombre de listes.
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 def position(tab,nb): position=[] for k in tab: i=0 end=False while not end and i<len(tab[k]): end=nb in tab[k][i] i+=1 if end: position.append(i-1) else: position.append('') return position
Avez-vous d'autres idées?
J'essaie de trouver une solution avec bisect qui est rapide, mais nécessite un tri préalable.
http://mail.python.org/pipermail/pyt...ne/266184.html
Merci.
Partager