Life-time of temporary variables in list comprehensions
Diez B. Roggisch
deets at nospam.web.de
Tue Oct 23 19:20:57 CEST 2007
> Hi All,
> If I have a list comprehension:
> c = "ABC"
> [1.0 if c=='A' else c='B' for c in ab]
> print c
> My test shows that if c is not defined before the list comprehension,
> it will be created in the list comprehension; if it is defined before
> the list comprehension, the value will be overwritten. In other words,
> temp variables are not local to list comprehensions.
> My question is why is this and is there any way to make c local to
> list comp?
Unfortunately, not as such. They do leak their variable names.
But what you can do ist to create generator expressions (which don't
leak) and put a list around them:
list(1.0 if c == 'A' else c="B" for c in ab)
More information about the Python-list