[Numpy-discussion] Tuples vs. lists when defining recarrays with array()

Fernando Perez fperez.net at gmail.com
Sun Jun 7 21:44:54 EDT 2009


On Sun, Jun 7, 2009 at 4:31 PM, David Warde-Farley<dwf at cs.toronto.edu> wrote:
> A question was raised on the #scipy IRC earlier today, about the
> behaviour of array() with structured dtypes. After some educated
> guessing I figured out that for record arrays, tuples (rather than
> lists) must be used to indicate atomic elements. What I wondered is
> whether this behaviour is documented anywhere, and does it belong in
> the array() docstring, for example? The docstring currently reads "...
> or any (nested) sequence."

+1 for a clear indication of  this fact, as it's rather unusual that a
tuple is OK where a list is not (for typical pythyon APIs) and the
error is *very* obscure.  I've been bitten enough times by this that
by now I'm used to it, but I distinctly remember much head scratching
and looking in the wrong places the first time I was hit by this
behavior.

I don't know if there's a good reason why lists aren't accepted
though, so that instead of  documenting an oddity it could just be
cleaned up.  Is it not possible for the constructor to duck-type here
a list for a tuple?  Maybe there's a good reason, but it feels like a
bit of a wart.

In any case, whether fixing or documenting it, +1 from this side.

Cheers,

f



More information about the NumPy-Discussion mailing list