Bonjour à tous,

J'ai une colle à vous poser. En gros, la question est : Comment rechercher le plus vite possible dans une liste ?

Voici mon problème (il est très simple !) : J'ai une zone de dessin avec des rectangles dont les coordonnées sont simplement mémorisées dans une liste du style :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
[ (rect1, 10, 10, 20, 20), (rect2, 45, 60, 100, 230), ...]
Quand je clique dans cette zone de dessin, j'obtiens les coordonnées de la souris (x,y) grâce auxquelles je vais savoir si j'ai cliqué sur un de mes rectangles ou non.

Pour faire cette recherche, j'ai donc une fonction du style :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
for rect in listeRectangles :
    if (rect[1] <= x <= rect[3]) and (rect[2] <= y <= rect[4]) :
        print u"j'ai cliqué sur le rectangle qui a le nom : " + rect[0]
Bref facile ! Mais mon souci est que quand j'ai 10 rectangles dans ma liste : la boucle est très vite faite et ma solution arrive vite... MAIS QUAND J'AI 500 RECTANGLES dans la liste, là c'est bien plus LENT !

Auriez-vous une autre méthode pour effectuer cette recherche plus vite ?

Je vous remercie pour vos réponses !