On Sat, Mar 5, 2022 at 4:33 AM Paul Moore <p.f.mo...@gmail.com> wrote:
> for thing in filter(is_interesting, this_collection): > ... > > That seems pretty non-clunky. Is the issue here that "filter" is not > sufficiently well-known? Or that you don't want to name the > is_interesting function, and lambdas are "too clunky"? This feels like > another case where the general dislike of lambda results in people > wanting special-case syntax so they can avoid either writing a > throwaway function, or using lambda. > Speaking for me -- it's not a dislike of lambda -- it's a dislike of the map / filter approach vs comprehensions in general. I guess you could say I have a dislike for lambda -- but really it's a dislike for having to create a function when an expression will do ;-) -- and lamda only supports expressions, so it will always do. This entire conversation -- at least from the side of the skeptics -- seems to be ignoring comprehensions: If we all thought that map and filter were perfectly adequate, comprehensions never would have been added at all. And not only were comprehensions added, but both a looping and filtering mechanism was added at the same time. Let's imagine for the moment that the filtering was not yet added -- then say the way to run a filtered loop in a comprehension would be: [expr for thing in filter(lambda thing: expr, an_iterable)] Would anyone really largure that there would be no point in adding the filter explicitly to get to (what we do have now): [expr1 for thing in an_iterable if expr2] The other relevant point is that adding an `if` to the for loop is new syntax, yes, but it mirrors the comprehension syntax very closely -- so is not nearly the cognitive load that most syntax additions are. In fact, I imagine if newbies were to learn about comprehensions first, they'd be surprised that there was no if allowed in for loops. Yes, this is a fairly minor improvement, but to me it's not adding syntax to "save a line" "or not have to use lambdas" -- but rather it's adding syntax to make it possible to express a particular concept in a way that is clear, obvious, and more consistent with the rest of the language (i.e. comprehensions). I was +0, but after this discussion, now +1. -CHB -- Christopher Barker, PhD (Chris) Python Language Consulting - Teaching - Scientific Software Development - Desktop GUI and Web Development - wxPython, numpy, scipy, Cython
_______________________________________________ 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/FJZ7B25KJNQVBHRQUGPMYWQLBQYS5DP5/ Code of Conduct: http://python.org/psf/codeofconduct/