[SciPy-user] help with list comprehensions

Robert Kern robert.kern at gmail.com
Wed Aug 1 15:01:35 EDT 2007


Stephen Yang wrote:
> Hello everyone,
> 
> I have a question about list comprehensions. I would like to append data 
> to an existing list using a list comprehension. Unfortunately, what I 
> have tried does not seem to work:
> 
>  >>> y = [5, 1, 3, 5]
>  >>> x = ['a', 'b']
>  >>> new = [x.append(data) for data in y]
>  >>> new
> [None, None, None, None]
> 
> Can anyone help? Thanks very much in advance.

For the example you give, you shouldn't use a list comprehension at all:

  x.extend(y)

If you do need a list comprehension for something more complicated (say, because
you were calling a function on each element):

  x.extend([f(data) for data in y])

The reason that your code didn't do what you thought it did stems from two causes:

  1) list.append() returns None.
  2) You were looking at `new` which was simply the result of the list
comprehension and not `x`, the list you were trying to extend. If you had looked
at `x`, you would have seen that the data were correctly appended. However, you
shouldn't do it that way anyways.

-- 
Robert Kern

"I have come to believe that the whole world is an enigma, a harmless enigma
 that is made terrible by our own mad attempt to interpret it as though it had
 an underlying truth."
  -- Umberto Eco



More information about the SciPy-User mailing list