list comprehensions value assignment syntax error
Hans Nowak
wurmy at earthlink.net
Tue Jan 7 19:43:19 EST 2003
Gerrit Holl wrote:
> I am trying to assign to a list item using list comprehensions, but this
> raises a SyntaxError:
>
>>>>[l[i] = chr(i) for i in range(256)]
>>>
> File "<stdin>", line 1
> [l[i] = chr(i) for i in range(256)]
> ^
> SyntaxError: invalid syntax
>
> Why?
The first part of a list comprehension must be an expression. An assignment
like l[i] = chr(i) is a statement.
> Do I really have to abandon list comprehensions or do this?:
>
>>>>[l.__setitem__(i, chr(i)) for i in range(256)]
This looks like an abuse of list comprehensions, doing something with them that
they're not really meant for.
As others have pointed out, you can write this as
l = [chr(i) for i in range(256)]
or, if you don't want to rebind l to a new object,
l[:] = [chr(i) for i in range(256)]
Or use a for loop, of course:
l = []
for i in range(256):
l[i] = chr(i)
Cheers,
--
Hans (base64.decodestring('d3VybXlAZWFydGhsaW5rLm5ldA=='))
# decode for email address ;-)
The Pythonic Quarter:: http://www.awaretek.com/nowak/
Kaa:: http://www.awaretek.com/nowak/kaa.html
More information about the Python-list
mailing list