[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Get list of attributes from list of objects?

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.