[Tutor] Creating a complex python object
Bob Gailer
bgailer at alum.rpi.edu
Fri Aug 13 20:40:39 CEST 2004
At 12:13 PM 8/13/2004, Jeff Shannon wrote:
>Chad Crabtree wrote:
>> >In the mean time I'll keep lurking on this list, there's still a
>>lot to python that baffles me (like just what is the difference between a
>>tuple and a list? :-) ).
>>I thought I would answer the tuple list thing. I did not understand
>>why have tuple's until I learned that tuples being immutable are faster
>>and easier on memory.
>
>Actually, speed and memory considerations are only incidental.
>
>One of the most important reasons that Python has both (mutable) lists and
>(immutable) tuples is because dictionaries don't work with mutable
>keys. If you stuck something into a dictionary that was keyed on a list,
>and then that list changed, you'd never be able to get that dictionary
>value back. But dictionaries are an important part of Python (many
>internal data structures are effectively dictionaries, among other
>things), and it's very valuable to be able to use a group of items as
>keys -- for example, a dictionary showing grid locations is much cleaner
>if you can key off of (x, y), rather than having a dictionary at x that
>has another dictionary that's keyed off of y.
>
>So, dictionaries are the reason that we have tuples. But once we *have*
>them, they tend to grow other differences...
>
>The common usage, now, is that lists usually contain a sequence of similar
>things, whereas tuples are usually more like a record, grouping together
>dissimilar things that are conceptually related. Thus, for example, in the
>date-time tuple returned by time.gmtime() each position within the tuple
>represents a different thing. In contrast, each position in a list
>represents a different instance, but all of the contents are the same type
>of thing. This distinction is just convention, of course, and there's
>nothing forcing you to follow it, but you'll find that just about every
>standard library module (and most other code, as well) will follow this
>guideline.
Darn - and just today I created a mechanism using a list in which the 1st
element is a string and the rest integer. Sigh.
Bob Gailer
bgailer at alum.rpi.edu
303 442 2625 home
720 938 2625 cell
More information about the Tutor
mailing list