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