Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Classer une liste d'objets

13 réponses
Avatar
Laurent Claessens
Bonjour



J'ai une liste d'instances d'une classe que j'ai cr=E9=E9. Typiquement,

-----------------------------------------

class Point(object):
def __init__(self,x,y):
self.x =3D x
self.y =3D y

P =3D Point(1,3)
Q =3D Point(2,7)
liste =3D []
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 =E7a de fa=E7on tr=E8s pi=E9tonne et tr=
=E8s
peu optimis=E9e, mais est-ce qu'il y a moyen de faire vite, et propre ?

Je ne vous cache pas que dans le cas concret que j'ai en t=EAte, c'est
plus imbriqu=E9; plut=F4t genre

-----------------------------------------

class Point(object):
def __init__(self,x,y):
self.x =3D x
self.y =3D y

class ligne(object):
def __init__(self,P,Q):
self.depart =3D P
self.arrive =3D Q

---------------------------------------------------------

Ensuite, j'ai une liste de lignes que je voudrais classer par
ordonn=E9es du point de d=E9part, c=E0d 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=E8me, je pourrai en
d=E9duire une au second probl=E8me, ainsi que des cas plus compliqu=E9s.

Merci de votre aide
Bon WE
Laurent

3 réponses

1 2
Avatar
Bruno Desthuilliers
NicolasP a écrit :

Pour info., il y a une discussion sur le "_"
dans le fil plus récent "__builtin__._ ?" ...



Oui, je la lis également.



Pour info aussi, le symbole '_' est souvent utilisé comme alias de
gettext.gettext

http://docs.python.org/lib/node731.html
Avatar
NicolasP
Bruno Desthuilliers a écrit :
NicolasP a écrit :

Pour info., il y a une discussion sur le "_"
dans le fil plus récent "__builtin__._ ?" ...



Oui, je la lis également.



Pour info aussi, le symbole '_' est souvent utilisé comme alias de
gettext.gettext

http://docs.python.org/lib/node731.html


Effectivement, maintenant que tu le dis, j'ai même déjà joué avec dans un projet WEB utilisant Karrigell.
Avatar
Bruno Desthuilliers
NicolasP a écrit :
Eric Brunel a écrit :


(snip)
quoi expliquer... Si c'est le _ qui te trouble, on peut réécrire ça
comme:


C'est bien le _ qui me pose problème.
liste = [y for x, y in liste_a_trier]
Le _ est une convention quelquefois utilisée pour une variable dont le
contenu ne nous intéresse pas.


Je pensais qu'il y avait un coté magique avec le _. Mais je vois que
non, juste une convention de nom. Nommer une variable _ ne me viendrait
pas à l'esprit. D'autant plus que dans certains langages c'est interdit.



PAQJS, cette convention vient des systèmes de pattern matching de
langages fonctionnels comme ML, haskell et Erlang, où '_' a
effectivement une signification un peu spéciale.
1 2