On Sat, 5 Mar 2022 at 22:22, Stephen J. Turnbull <stephenjturnb...@gmail.com> wrote: > > Chris Angelico writes: > > > What Python needs is not a way to cram more onto one line. What Python > > needs is a way to express an abstract concept: "iterate over the > > interesting parts of this collection". > > Python has one, and you've already mentioned it: > > for thing in (x for x in this_collection if is_interesting(x)): > > It's noticably verbose, but it's an exact translation of your > statement of the abstract concept above. It has all the benefits of > the proposed syntax except compactness[1].
It is extremely verbose, considering that the filtering part of a comprehension uses the same variable name as iteration, doesn't need anything to be repeated, and is just another clause. A simple representation of that in a statement loop would be "for thing in this_collection if is_interesting(thing):", which doesn't repeat itself at all (the variable name "thing" is kinda essential to the concept of filtration here, so I don't count that); and repetition isn't simply about number of characters on the line, it's about reducing the potential for errors. (Plus, the genexp adds a significant amount of run-time overhead.) So you're right, I stand (partly) corrected: there IS a very clunky way to spell this concept. What Python needs is a non-clunky way to express this. ChrisA _______________________________________________ Python-ideas mailing list -- python-ideas@python.org To unsubscribe send an email to python-ideas-le...@python.org https://mail.python.org/mailman3/lists/python-ideas.python.org/ Message archived at https://mail.python.org/archives/list/python-ideas@python.org/message/TA3MLAC2IC5MUD3WWAG5FIPYJWN4YEAY/ Code of Conduct: http://python.org/psf/codeofconduct/