On 09.01.17 05:53, Steven D'Aprano wrote:
Suppose you have an expensive calculation that gets used two or more times in a
loop. The obvious way to avoid calculating it twice in an ordinary loop is with
a temporary variable:
result = []
for x in data:
tmp = expensive_calculation(x)
result.append((tmp, tmp+1))
But what if you are using a list comprehension?
result = [(tmp, tmp + 1)
for tmp in (expensive_calculation(x) for x in data)]
You could also assign an internal generator expression to temporal
variable for readability if it is long.
gen = (expensive_calculation(x) for x in data)
result = [(tmp, tmp + 1) for tmp in gen]
--
https://mail.python.org/mailman/listinfo/python-list