97 votes

Extraire une liste d'attributs d'une liste d'objets en python

J'ai un uniforme liste d'objets en python :

class myClass(object):
    def __init__(self, attr):
        self.attr = attr
        self.other = None

objs = [myClass (i) for i in range(10)]

Maintenant je veux extraire une liste avec un attribut de cette classe (disons attr), afin de la passer à une fonction (pour tracer ces données par exemple).

Quelle est la manière pythonique de le faire ?

attr=[o.attr for o in objsm]

?

Peut-être dériver la liste et lui ajouter une méthode, afin que je puisse utiliser un idiome comme

objs.getattribute("attr")

?

101voto

Mike Graham Points 22480

attrs = [o.attr for o in objs] était le bon code pour faire une liste comme celle que vous décrivez. N'essayez pas de sous-classer list pour ça. Y a-t-il quelque chose que vous n'avez pas aimé dans cet extrait ?

95voto

Reto Aebersold Points 6144

Vous pouvez également écrire :

attr=(o.attr for o in objsm)

De cette façon, vous obtenez un générateur qui conserve la mémoire. Pour plus d'avantages, consultez Expressions du générateur .

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X