Recherche rapide de liste

Recherche rapide de liste - Python - Programmation

Marsh Posté le 20-04-2009 à 13:45:22    

Bonjour,
sous python 2.5, je dois trouver la position d'une liste dans une liste de listes au format homogène (même nombre d'éléments, mêmes types).
Ex.:
dans
 
tab=[['359974000073A', 362.0], ['3017800110768F', 362.0], ['T083680094092', 62.0], ['3245390062390', 32.0]]
 
position de
 
t=['3017800110768F', 362.0]
 
renvoie ind=1.
 
Mon soucis, c'est que je peux avoir 2, 3 et + éléments dans t, que tab peut contenir jusqu'à un million de listes et que je dois répéter l'opération des millions de fois !
Bref, je dois optimiser à tout prix mes codes.
J'ai tenté simplement:
 
ind=tab.index(t)
 
mais c'est lent.
Est-ce intéressant de trier tab avant de lancer la recherche (éventuellement dichotomique) ?
J'avais essayé (si len(t)>1):
 
tab=numpy.array(tab)
inter=set(numpy.argwhere(tab==t[0]).T[0])
for v in range(1,len(t)):
    inter=inter.intersection(set(numpy.argwhere(tab==t[v]).T[0]))
    ind=inter.pop()
 
(cf.: http://forum.hardware.fr/hfr/Progr [...] 2130_1.htm)
 
ça marche, mais c'est encore + lent.
Et tab devient un ndarray de numpy, donc pas de méthode .index.
 
Qui aurait une solution + rapide?
Merci.

Reply

Marsh Posté le 20-04-2009 à 13:45:22   

Reply

Sujets relatifs:

Leave a Replay

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