lists v. tuples
Robert Bossy
Robert.Bossy at jouy.inra.fr
Mon Mar 17 09:36:51 EDT 2008
castironpi at gmail.com wrote:
> On Mar 17, 6:49 am, MartinRineh... at gmail.com wrote:
>
>> What are the considerations in choosing between:
>>
>> return [a, b, c]
>>
>> and
>>
>> return (a, b, c) # or return a, b, c
>>
>> Why is the immutable form the default?
>>
>
> Using a house definition from some weeks ago, a tuple is a data
> structure such which cannot contain a refrence to itself. Can a
> single expression refer to itself ever?
>
In some way, I think this answer will be more confusing than
enlightening to the original poster...
The difference is that lists are mutable, tuples are not. That means you
can do the following with a list:
- add element(s)
- remove element(s)
- re-assign element(s)
These operations are impossible on tuples. So, by default, I use lists
because they offer more functionality.
But if I want to make sure the sequence is not messed up with later, I
use tuples. The most frequent case is when a function (or method)
returns a sequence whose fate is to be unpacked, things like:
def connect(self, server):
# try to connect to server
return (handler, message,)
It is pretty obvious that the returned value will (almost) never be used
as is, the caller will most probably want to unpack the pair. Hence the
tuple instead of list.
There's a little caveat for beginners: the tuple is immutable, which
doesn't mean that each element of the tuple is necessarily immutable.
Also, I read several times tuples are more efficient than lists, however
I wasn't able to actually notice that yet.
Cheers,
RB
More information about the Python-list
mailing list