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

Reply via email to