Range Operation pre-PEP

Ben Hutchings ben.hutchings at roundpoint.com
Thu May 10 19:11:52 EDT 2001


Douglas Alan <nessus at mit.edu> writes:

> Ben Hutchings <ben.hutchings at roundpoint.com> writes:
> 
> > Lists also have count() and index() methods, which tuples do not.
> > Doesn't this suggest a difference in intended purpose to you?
> 
> I also see that tuples support "in" and "+" and "*" and slicing and
> len() and min() and max().

OK, you're right.

> In light of this, it seems that the fact that they are missing
> count() and index() should only been seen as an unfortunate
> oversight.

Based on the above - yes.

I'd be happier if tuples only supported len() though - because
this large overlap in tuple and list capabilities means that it's
less obvious which is a good choice for some particular purpose.

> >>> Tuples are like data structures or product types in other
> >>> languages, except that their types and fields are nameless.
> >>> Comprehensions work with a variable number of homogeneous values,
> >>> so they produce lists.
> 
> > > filter() on a tuple returns a tuple.  The length of the tuple cannot
> > > be known in advance.
> 
> > Presumably filter() only requires its argument to be a sequence.
> 
> Yes, if its sequence argument is a tuple, then it returns a tuple.  If
> you were right, you should never want to run filter on a tuple, and if
> you were so foolish to use filter() on a tuple, it should return a
> list to show you the errors of your ways.

Well I think it should do that.  Oh well.

> Or actually, tuples shouldn't be sequences at all, since you should
> never treat a tuple as a sequence, rather than just as a record.

It's necessary to treat tuples generically sometimes, so they need to
be sequences.

-- 
Any opinions expressed are my own and not necessarily those of Roundpoint.



More information about the Python-list mailing list