Misuse of list comprehensions?

Larry Bates larry.bates at websafe.com`
Tue May 20 19:51:29 EDT 2008


John Salerno wrote:
> I posted this code last night in response to another thread, and after I 
> posted it I got to wondering if I had misused the list comprehension. Here's 
> the two examples:
> 
> Example 1:
> --------------------
> def compress(s):
>     new = []
> 
>     for c in s:
>         if c not in new:
>             new.append(c)
>     return ''.join(new)
> ----------------------
> 
> Example 2:
> ------------------------
> def compress(s):
>     new = []
>     [new.append(c) for c in s if c not in new]
>     return ''.join(new)
> --------------------------
> 
> In example 1, the intention to make an in-place change is explicit, and it's 
> being used as everyone expects it to be used. In example 2, however, I began 
> to think this might be an abuse of list comprehensions, because I'm not 
> assigning the result to anything (nor am I even using the result in any 
> way).
> 
> What does everyone think about this? Should list comprehensions be used this 
> way, or should they only be used to actually create a new list that will 
> then be assigned to a variable/returned/etc.? 
> 
> 

You might use this:

def compress(s)
  return ''.join([ u for u in s if u not in locals()['_[1]'] ])



More information about the Python-list mailing list