flatten a level one list

Cyril Bazin cyril.bazin at info.unicaen.fr
Thu Jan 12 09:59:45 CET 2006


Another try:

def flatten6(x, y):
    return list(chain(*izip(x, y)))

(any case, this is shorter ;-)

Cyril

On 1/12/06, Michael Spencer <mahs at telcopartners.com> wrote:
> Tim Hochberg wrote:
> > Michael Spencer wrote:
> >>  > Robin Becker schrieb:
> >>  >> Is there some smart/fast way to flatten a level one list using the
> >>  >> latest iterator/generator idioms.
> >> ...
> >>
> >> David Murmann wrote:
> >>  > Some functions and timings
> >> ...
> >
> > Here's one more that's quite fast using Psyco, but only average without it.
> >
> >
> > def flatten6():
> >      n = min(len(xdata), len(ydata))
> >      result = [None] * (2*n)
> >      for i in xrange(n):
> >              result[2*i] = xdata[i]
> >              result[2*i+1] = ydata[i]
> >
> > -tim
> >
> Indeed:
>
> I added yours to the list (after adding the appropriate return)
>
>   >>> testthem()
>   >>> timethem()
>   flatten1(...)  702 iterations, 0.71msec per call
>   flatten2(...)  641 iterations, 0.78msec per call
>   flatten3(...)  346 iterations, 1.45msec per call
>   flatten4(...)  1447 iterations, 345.66usec per call
>   flatten5(...)  1218 iterations, 410.55usec per call
>   flatten6(...)  531 iterations, 0.94msec per call
>   >>>
>
> (See earlier post for flatten1-5)
>
> Michael
>
> --
> http://mail.python.org/mailman/listinfo/python-list
>



More information about the Python-list mailing list