a.extend(b) better than a+=b ?

Peter Otten __peter__ at web.de
Thu Apr 22 03:28:32 EDT 2010


candide wrote:

> Suppose a and b are lists.
> 
> What is more efficient in order to extend the list a by appending all
> the items in the list b ?
> 
> 
> I imagine a.extend(b)to be more efficient for only appendinding the
> items from b while a+=b creates a copy of a before appending, right ?

No. Both append items to the original list a:

>>> a = original_a = [1,2,3]
>>> a.extend([4,5,6])
>>> a is original_a # you knew that
True
>>> a += [7,8,9] # could rebind a
>>> a is original_a # but effectively doesn't for lists
True

(Strictly speaking a += [...] rebinds a to the same value, like a = a)

It is mostly a matter of personal preference which form you use.
I prefer the extend() method because I think it's clearer; you don't run the 
risk of mistaking it for an arithmetic operation.

Peter

PS: an example where += does rebind:
>>> a = original_a = (1,2,3)
>>> a += (4,5,6)
>>> a is original_a
False




More information about the Python-list mailing list