Chris Angelico wrote: > On Wed, Jun 12, 2013 at 1:28 AM, Serhiy Storchaka <storch...@gmail.com> > wrote: >> 11.06.13 01:50, Chris Angelico написав(ла): >> >>> On Tue, Jun 11, 2013 at 6:34 AM, Roy Smith <r...@panix.com> wrote: >>>> >>>> new_songs = [s for s in songs if s.is_new()] >>>> old_songs = [s for s in songs if not s.is_new()] >>> >>> >>> Hmm. Would this serve? >>> >>> old_songs = songs[:] >>> new_songs = [songs.remove(s) or s for s in songs if s.is_new()]
I think you meant old_songs.remove(s). >> O(len(songs)**2) complexity. > > Which isn't significant if len(songs) is low. We weren't told the > relative costs - is the is_new call ridiculously expensive? Everything > affects algorithmic choice. But is it correct? In the general case, no: >>> numbers = [1, 1.0, 2.0, 2] >>> ints = numbers[:] >>> floats = [ints.remove(n) or n for n in numbers if isinstance(n, float)] >>> floats [1.0, 2.0] >>> ints [1.0, 2] # hmm -- http://mail.python.org/mailman/listinfo/python-list