Tuple question

Donn Cave donn at drizzle.com
Sun Sep 5 06:39:43 CEST 2004

Quoth aleaxit at yahoo.com (Alex Martelli):
| Donn Cave <donn at u.washington.edu> wrote:
|    ... 
|> On the other hand, we normally use tuples for data that
|> is meaningful only when it's intact.  The (key, value)
| So by this argument len(t) should not work if t is a tuple...

I expect it's used relatively infrequently, and for different
reasons.  "if len(info) == 5", for example - just from that
line from a relatively popular Python application, would you
guess info is a list, or a tuple?

| I've never accepted the BDFL's explanations on what tuples are for; like
| Python beginners I use them as immutable lists (to index into a
| dictionary or be set members) and curse their lack of useful methods.
| > pair that comes back from dict.items(), for example.  Each
| > value may very well be a string, but the sequence is not
| > homogeneous in the sense we're talking about, and index()
| > is not useful.
| Even for a pair I sometimes like to know if 42 is the key, the  value,
| or neither.  index is handy for that... but not if the pair is a tuple,
| only if it's a list.  Rationalize as you will, it's still a Python wart.

Maybe the problem is that tuples have too many features already.
It's sort of silly that they're indexed by number, and if that
weren't allowed, we would find fewer people trying to make lists
of them.

| Pseudotuples with NAMED (as well as indexed) arguments, as modules stat
| and time now return, may be a different issue.  Not sure why we never
| made declaring such pseudotuples as usertypes as easy as it should be, a
| custom metaclass in some stdlib module shd be enough.  But tuples whose
| items can't be named, just indexed or sliced, just are not a good fit
| for the kind of use case you and Guido use to justify tuple's lack of
| methods, IMHO.

There you go, they shouldn't be indexed or sliced, that's right!
Named attributes would be nice, but otherwise you use pattern
matching (to the extent support in Python --  key, value = item.)
Makes for more readable code.

	Donn Cave, donn at drizzle.com

More information about the Python-list mailing list