When is List Comprehension inappropriate?

John J. Lee jjl at pobox.com
Wed Mar 21 18:11:38 EDT 2007


Steve Holden <steve at holdenweb.com> writes:

> Alex Martelli wrote:
> > BJörn Lindqvist <bjourne at gmail.com> wrote:
> >    ...
> >> even2 = [(pos, col) for pos, col in iterimage(im, width, height, 2)]
> > list(iterimage(etc etc))
> > is surely a better way to express identical semantics.  More
> > generally,
> > [x for x in whatever] (whether x is a single name or gets peculiarly
> > unpacked and repacked like here) is a good example of inappropriate LC,
> > to get back to the question in the subject: list(whatever) is the "one
> > obvious way" to perform the same task.
> >
> Clearly the comprehension you complain about is sub-optimal.
> 
> The essential difference, however, is between
> 
>    [x for x in iterimage(im, width, height, 2)]
> 
> and
> 
>    list(iterimage(im, width, height, 2))
> 
> I agree that the latter is the obvious way, but the difference isn't
> as large as your leap makes it look - and we had to await the
> invention of the generator expression for it to be a practical choice.

What generator expression?  I don't see a genexp in your examples.


John



More information about the Python-list mailing list