question about list extension

Terry Reedy tjreedy at
Fri Apr 16 15:16:55 EDT 2010

On 4/16/2010 9:41 AM, J wrote:
> Ok... I know pretty much how .extend works on a list... basically it
> just tacks the second list to the first list... like so:
>>>> lista=[1]
>>>> listb=[2,3]
>>>> lista.extend(listb)
>>>> print lista;
> [1, 2, 3]

This shows right here that lista is extended in place. If you are not 
convinced, print(id(lista)) before and after.

> what I'm confused on is why this returns None:
>>>> lista=[1]
>>>> listb=[2,3]
>>>> print lista.extend(listb)
> None

It is conventional in Python (at least the stdlib) that methods that 
mutate mutable objects 'in-place' return None to clearly differentiate 
them from methods that return new objects. There are pluses and minuses 
but such it is.

Terry Jan Reedy

More information about the Python-list mailing list