On Thu, Jan 1, 2009 at 3:07 PM, Christopher Mutel <[email protected]> wrote: > Hello all- > > I stumbled across some discussion of why the fundamental difference > between lists and tuples is not mutability, but hetero- versus > homogeneous data, e.g. > > http://jtauber.com/blog/2006/04/15/python_tuples_are_not_just_constant_lists/ > > http://pyre.third-bit.com/blog/archives/000450.html > > However, after reading the cited discussions, my python books, etc., I > have to admit I don't really understand this idea. What does it mean > that "lists are intended for homogeneous sequences"? What is different > about lists that would make them more suited for homogeneous sequences > than heterogeneous sequences (or vice-versa for tuples)? In the end, > from what I understand, the idea of homo/heterogeneity seems > orthogonal to mutability, which is the main distinction emphasized by > e.g. Learning Python. > > I would greatly appreciate any help provided,
Lists do have all kinds of operations that tuples do not have. Many of those will change the order of the elements in the list, for example by adding or removing an element, or exchanging some elements. Because of this, many of those operations are only useful on homogenous sequences - which means that the second element could also be the first or the fourth, and would then still mean the same thing, though in another place. On the other hand, if I have a heterogenous sequence, that is, if what is in the second position could either not appear on the fourth position (because the second is an integer and the fourth a string, for example), or would mean something completely different there (for example if the second and fourth were both floats, but the second was a price in dollars and the fourth a mass in kilograms), then many of those operations make no sense (in fact, the only one I think _would_ make sense for heterogenous sequences is changing the value of the element at a specified position). Thus, if you have a heterogenous sequence, all those nifty operations on lists have no use, and dropping them for getting the niceties of immutability (like usage as the key in a dictionary) is getting something for almost nothing, thus you might as well use a tuple. -- André Engels, [email protected] _______________________________________________ Tutor maillist - [email protected] http://mail.python.org/mailman/listinfo/tutor
