Get list of attributes from list of objects?

Chris Angelico rosuav at gmail.com
Wed Aug 2 13:49:59 EDT 2017


On Thu, Aug 3, 2017 at 3:21 AM, Ian Pilcher <arequipeno at gmail.com> wrote:
> Given a list of objects that all have a particular attribute, is there
> a simple way to get a list of those attributes?
>
> In other words:
>
>   class Foo(object):
>       def __init__(self, name):
>           self.name = name
>
>   foolist = [ Foo('a'), Foo('b'), Foo('c') ]
>
>   namelist = []
>   for foo in foolist:
>       namelist.append(foo.name)
>
> Is there a way to avoid the for loop and create 'namelist' with a single
> expression?

You can't eliminate the loop, but you can compact it into a single
logical operation:

namelist = [foo.name for foo in foolist]

That's a "list comprehension", and is an elegant way to process a list
in various ways.

ChrisA



More information about the Python-list mailing list