rs387 wrote:
I'm trying to understand why it is that I can do
a = []
a += 'stuff'
a
['s', 't', 'u', 'f', 'f']
but not
a = []
a = a + 'stuff'
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: can only concatenate list (not "str") to list
Can someone explain the logic? Why is the in-place add not a type
error but the usual add is? (This applies to both Python 2.6rc1 and
3.0b2)
It's because the `+=` operator is doing the equivalent of calling the
`extend` method, which treats its argument as a generic sequence, and
doesn't enforce type. The same thing happens with any other sequence
type as the right-hand operand; for instance, tuples:
>>> a = []
>>> a += (1, 2, 3)
>>> a
[1, 2, 3]
>>> a = []
>>> a = a + (1, 2, 3)
Traceback (most recent call last):
File "<stdin>", line 1, in ?
TypeError: can only concatenate list (not "tuple") to list
--
Erik Max Francis && [EMAIL PROTECTED] && http://www.alcyone.com/max/
San Jose, CA, USA && 37 18 N 121 57 W && AIM, Y!M erikmaxfrancis
Man is a hating rather than a loving animal.
-- Rebecca West
--
http://mail.python.org/mailman/listinfo/python-list