General question about Python design goals

Antoon Pardon apardon at forel.vub.ac.be
Mon Nov 28 04:03:23 EST 2005


Op 2005-11-28, Aahz schreef <aahz at pythoncraft.com>:
> In article <dmdlhj$87b$1 at online.de>,
> Christoph Zwerschke  <cito at online.de> wrote:
>>
>>For instance, I just wanted to use the index() method on a tuple which 
>>does not work. It only works on lists and strings, for no obvious 
>>reason. Why not on all sequence types?
>
> Because Guido believes that tuples should be primarily used as
> lightweight replacements for C structs.  Therefore they have minimal
> functionality.

I find that a bit contradictory with the fact that if you want list like
structures as a dictionary key, you are mostly advised to cast them
as tuples.

So suppose I want a dictionary, where the keys are colours, represented
as RGB triplets of integers from 0 to 255. A number of things can be
checked by index-like methods.

e.g.
  
  def iswhite(col):
    return col.count(255) == 3

  def primary(col):
    return col.count(255) == 1 and col.count(0) == 2

  def secondary(col):
    return col.count(255) == 2 and col.count(0) == 1


So, what should I use to implement this? Whether I choose
lists or tuples, I will end up either copying a lot from
lists to tuples or vice versa, to get the functionality
I need, or I will have to implement functionality myself
that basically is already in the language.

I also find the use of C-structs and tuples completly different.
If I need a C-struct like object, I go for Bunch, Rec or something
similar. Something that uses field identifiers to address components,
Not something that uses indexing.

-- 
Antoon Pardon



More information about the Python-list mailing list