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:

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
Mais c'est très très lent, et ça semble saturer pour un grand nombre de listes.

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.