Misuse of list comprehensions?

Paddy paddy3118 at googlemail.com
Tue May 20 17:29:49 EDT 2008


On May 20, 3:58 pm, Paul McGuire <pt... at austin.rr.com> wrote:
> On May 20, 8:13 am, "John Salerno" <johnj... at NOSPAMgmail.com> 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.?
>
> Why not make the list comp the actual list you are trying to build?

... Because it obscures the intent of the code.

- Paddy.



More information about the Python-list mailing list