Misuse of list comprehensions?

John Salerno johnjsal at NOSPAMgmail.com
Tue May 20 09:13:38 EDT 2008


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.? 





More information about the Python-list mailing list