Temporary variables in list comprehensions
Tim Chase
python.list at tim.thechases.com
Thu Apr 6 16:22:49 EDT 2017
On 2017-04-06 14:56, Vincent Vande Vyvre wrote:
> With two passes
>
> e = [expensive_calculation(x) for x in data]
> final = [(x, y+1) for x, y in zip(e, e)]
Using a generator it can be done in one pass:
final = [
(value, tmp, tmp+1)
for value, tmp
in (
(x, expensive_calculation(x))
for x in data
)
]
The above makes use of the original value as well at top level
(whether you need it for "if" filtering, or in your final tuple
result). If you don't care, you can discard it
final = [
(tmp, tmp+1)
for tmp
in (
expensive_calculation(x)
for x in data
)
]
-tkc
More information about the Python-list
mailing list