Jorge Godoy wrote: > Wildemar Wildenburger <[EMAIL PROTECTED]> writes: > >> I don't know how else to call what I'm currently implementing: An object that >> behaves like a list but doesn't store it's own items but rather pulls them >> from a larger list (if they match a certain criterion). >> Changes to the filter are instantly reflected in the underlying list. >> Clear enough? > > It looks like you're implementing a callable to me. This is a method that > returns results based on some input -- here your original list and filter. > Then you'll use this method wherever you need that filtered list. > Ok, so I'm not clear enough ;) . I don't just want to extract certain elements from a list, I want an object that looks like a list, however all changes made to that object are automagically reflected in the original list. (I guess that is one of those 'if it's hard to explain, ...' cases.)
I should have included an example right away ... here goes: # I have a list l = [1, 2, 3, 4, 5, 6, 7] # I then want to create a Filter instance # (Filter beeing a *class* implemented by me) # where isEven() returns True whenever an item of l # should be included in f (in this case, even numbers). # (I'm asking if something like this exists in the libs # or elsewhere) f = Filter(l, isEven) # The desired behavior now goes something like this: f >>> [2, 4, 6] del f[1] f >>> [2, 6] l >>> [1, 2, 3, 5, 6, 7] f.append(77) f >>> [2, 6, 77] # 77 being intentionally uneven l >>> [1, 2, 3, 5, 6, 7, 77] # could be [1, 2, 3, 5, 6, 77, 7] as well # I don't care here # and so forth ... I think SQL views are the direct analog. > I don't believe it is generic. Nobody knows your data specs or filtering > needs. Hence the additional function in the Filter constructor ;) . You suggest the same thing below, so that is obviously no problem. > Use of list comprehension might make it easier to code this: > > <snip elaborate example> I sort of wanted to avoid these. Though my lists shouldn't terribly long, so performance is not an issue so much. I simply want to avoid having two datasets that I have to sync. Major pain, I believe. Coding all that really is quite straight forward, but it is a lot of mule-work. I hoped (no, I still hope) that there might be somethin like that around already. A bit clearer now? bye wildemar -- http://mail.python.org/mailman/listinfo/python-list