Is there a Python equivalent of the Haskell ‘let’ expression that would allow me to write something like:
list2 = [let (name,size)=lookup(productId) in (barcode(productId),metric(size))
for productId in list]
If not, what would be the most readable alternative?
Added for clarification of the let syntax:
x = let (name,size)=lookup(productId) in (barcode(productId),metric(size))
is equivalent to
(name,size) = lookup(productId)
x = (barcode(productId),metric(size))
The second version doesn’t work that well with list comprehensions, though.
You could use a temporary list comprehension
or, equivalently, a generator expression
but both of those are pretty horrible.
Another (horrible) method is via a temporary lambda, which you call immediately
I think the recommended “Pythonic” way would just be to define a function, like