It sounds like the wasteful list creation is the biggest objection toAre you aware that filter() returns a list populated from its arguments?
using a list comprehension. I'm curious what people think of this
alternative, which avoids populating the list by using a generator
expression instead (apart from the fact that this is still quadratic,
which I'm aware of).
def compress(s):
new = []
filter(None, (new.append(c) for c in s if c not in new))
return ''.join(new)
Tim Delaney