Producing multiple items in a list comprehension

Marc Christiansen usenet at solar-empire.de
Thu May 22 15:48:19 EDT 2008


Joel Koltner <zapwireDASHgroups at yahoo.com> wrote:
> Is there an easy way to get a list comprehension to produce a flat
> list of, say, [x,2*x] for each input argument?
> 
> E.g., I'd like to do something like:
> 
> [ [x,2*x] for x in range(4) ]
> 
> ...and receive
> 
> [ 0,0,1,2,2,4,3,6]
> 
> ...but of course you really get a list of lists:
> 
> [[0, 0], [1, 2], [2, 4], [3, 6]]

I'm not sure I would recommend it, but try:

[v for x in range(4) for v in (x, 2 * x)]

> A slightly similar problem: If I want to "merge," say, list1=[1,2,3]
> with list2=[4,5,6] to obtain [1,4,2,5,3,6], is there some clever way
> with "zip" to do so?

A similar solution as above should work.

Marc



More information about the Python-list mailing list