Laurent Claessens a écrit :
Bonjour
J'ai une liste d'instances d'une classe que j'ai créé. Typiquement,
-----------------------------------------
class Point(object):
def __init__(self,x,y):
self.x = x
self.y = y
P = Point(1,3)
Q = Point(2,7)
liste = []
liste.append(P)
liste.append(Q)
---------------------------------------------------------
Je voudrais maintenant classer la liste par ordre de l'attribut x des
objets. Je vois comment je ferais ça de façon très piétonne et très
peu optimisée, mais est-ce qu'il y a moyen de faire vite, et propre ?
class Point(object):
def __init__(self,x,y):
self.x = x
self.y = y
def __cmp__(self,other):
if self.x < other.x: return -1
if self.x > other.x: return +1
return 0
P = Point(5,3)
Q = Point(2,7)
liste = []
liste.append(P)
liste.append(Q)
print [p.x for p in liste]
liste.sort()
print [p.x for p in liste]
Je ne vous cache pas que dans le cas concret que j'ai en tête, c'est
plus imbriqué; plutôt genre
-----------------------------------------
class Point(object):
def __init__(self,x,y):
self.x = x
self.y = y
class ligne(object):
def __init__(self,P,Q):
self.depart = P
self.arrive = Q
---------------------------------------------------------
Ensuite, j'ai une liste de lignes que je voudrais classer par
ordonnées du point de départ, càd si L est une ligne, je voudrais
classer en fonction de
L.depart.x
Je suppose que si j'ai une solution au premier problème, je pourrai en
déduire une au second problème, ainsi que des cas plus compliqués.
Merci de votre aide
Bon WE
Laurent