behavior varied between empty string '' and empty list []

Gabriel Genellina gagsl-py2 at yahoo.com.ar
Mon Mar 24 14:56:24 EDT 2008


En Mon, 24 Mar 2008 15:22:43 -0300, Tzury Bar Yochay  
<Afro.Systems at gmail.com> escribió:

> while I can invoke methods of empty string '' right in typing
> (''.join(), etc.) I can't do the same with empty list
>
> example:
>
>>>> a = [1,2,3]
>>>> b = [].extend(a)
>>>> b
>>>> b = []
>>>> b.extend(a)
>>>> b
> [1,2,3]

extend() -like most mutating methods- does not return the list, it returns  
None.
Your empty list grow the 3 additional items, but since there were no  
additional references to it, got destroyed.

> I would not use b = a since I don't want changes on 'b' to apply on
> 'a'

Try with b = list(a)

> do you think this should be available on lists to invoke method
> directly?

You already can. Your example is misleading because you used b with two  
meanings.
(Compare the *usage* of each variable/value, not their names). This is  
equivalent to the second part of your example:

py> a = [1,2,3]
py> b = []
py> b.extend(a)
py> b
[1, 2, 3]

and this is the first part:

py> a = [1,2,3]
py> b = []
py> c = b.extend(a)
py> c
py> b
[1, 2, 3]

except that in your original example, the empty list had no name so you  
cannot see how it changed.

-- 
Gabriel Genellina




More information about the Python-list mailing list