In article <mailman.3023.1370964449.3114.python-l...@python.org>, Serhiy Storchaka <storch...@gmail.com> wrote:
> 11.06.13 07:11, Roy Smith напиÑав(ла): > > In article <mailman.2992.1370904643.3114.python-l...@python.org>, > > Roel Schroeven <r...@roelschroeven.net> wrote: > > > >> new_songs, old_songs = [], [] > >> [(new_songs if s.is_new() else old_songs).append(s) for s in songs] > > > > Thanks kind of neat, thanks. > > > > I'm trying to figure out what list gets created and discarded. I think > > it's [None] * len(songs). > > It is the same as your klunky code, but consumes more memory. Well, continuing down this somewhat bizarre path: new_songs, old_songs = [], [] itertools.takewhile( lambda x: True, (new_songs if s.is_new() else old_songs).append(s) for s in songs) ) I'm not sure I got the syntax exactly right, but the idea is anything that will iterate over a generator expression. That at least gets rid of the memory requirement to hold the throw-away list :-)
-- http://mail.python.org/mailman/listinfo/python-list