FWIW, the nested loop over a single item is already in the language for 15 years or something. It's not that ugly, certainly not enough to need a new 'let' or 'where' keyword that basically does exactly the same thing with 3 fewer characters.
On Feb 23, 2018 10:04 PM, David Mertz <me...@gnosis.cx> wrote: On Feb 23, 2018 9:26 PM, "Steven D'Aprano" <st...@pearwood.info> wrote: Given a potentially expensive DRY violation like: [(function(x), function(x)+1) for x in sequence] there are at least five ways to solve it. A 6th way is to wrap the expensive function in @lru_cache() to make it non-expensive. [(a, a+1) for x in sequence for a in [function(x)]] It's funny to me how many people, even the BDFL, have said this is tricky to reason about or recognize. I didn't think of it all by myself, but saw it somewhere years ago. It seemed obvious once I saw it. Since then it's something I do occasionally in my code without much need for thought.
_______________________________________________ Python-Dev mailing list Python-Dev@python.org https://mail.python.org/mailman/listinfo/python-dev Unsubscribe: https://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com