consistency: extending arrays vs. multiplication ?

Robert Kern rkern at ucsd.edu
Sun Jul 24 14:50:08 EDT 2005


Soeren Sonnenburg wrote:
> On Sun, 2005-07-24 at 13:36 +1000, Steven D'Aprano wrote:
> 
>>On Sat, 23 Jul 2005 18:30:02 +0200, Soeren Sonnenburg wrote:
>>
>>>Hi all,
>>>
>>>Just having started with python, I feel that simple array operations '*'
>>>and '+' don't do multiplication/addition but instead extend/join an
>>>array:
>>
>>* and + are not array operations, they are list operations.
>>
>>Lists in Python can contain anything, not just numeric values.
> 
> That seems to be *the point*.

Whose point? If you mean that you want to be able to use arbitrary 
objects in an array, then look in numarray.objects for an array type 
that handles arbitrary Python objects.

> Although list(a) + list(b) could create a
> list [ a[0]+b[0], ...] and bail out if for elements '+' is not
> defined...

Unlike the current situation, where a+b always works consistently 
despite the contents, despite how long the lists are.

>>Python doesn't have built-in mathematical arrays, otherwise known as
>>matrices. There are modules that do that, but I haven't used them. Google
>>on Numeric Python.
> 
> Well I am aware of that but I don't understand the reasons of having
> both lists (which are infect arrays)

They "are in [fact] arrays" only in the sense that they are containers 
of objects with a contiguous layout in memory. That doesn't imply either 
set of semantics for + and * operators.

> and *arrays ?

They're good at different things. Arrays like Numeric/numarray are 
harder to implement than the builtin lists.

> *I* would rather drop
> '+' and '*' to work like they do in *array ...

Tough. It's 14 years or so too late to make that change.

-- 
Robert Kern
rkern at ucsd.edu

"In the fields of hell where the grass grows high
  Are the graves of dreams allowed to die."
   -- Richard Harter




More information about the Python-list mailing list