1 | initial version |

I would expect `A[i][j]`

to be slower because it first has to create the vector `A[i]`

and then extract an element from it, whereas `A[i,j]`

does a single extraction without creating intermediate objects. There is overhead in constructing a mathematical object like a vector. Also, `A[i,j]`

calls a single method, `A.__getitem__`

, whereas `A[i][j]`

performs two calls: it calls `A.__getitem__`

once to form the vector `v = A[i]`

, and then calls `v.__getitem__`

on that vector.

So if you care about performance, use `A[i,j]`

. If you need the intermediate vector, use `A[i]`

.

2 | No.2 Revision |

I would expect `A[i][j]`

to be slower because it first has to create the vector `A[i]`

and then extract an element from it, whereas `A[i,j]`

does a single extraction without creating intermediate objects. There is overhead in constructing a mathematical object like a vector. Also, `A[i,j]`

calls a single method, `A.__getitem__`

, whereas `A[i][j]`

performs two calls: it calls `A.__getitem__`

once to form the vector `v = A[i]`

, and then calls `v.__getitem__`

on that vector.

So if you care about performance, use `A[i,j]`

. If you need the intermediate vector, use `A[i]`

.

Regarding the ellipsis notation, it's written for mathematicians, like a lot of Sage. In mathematical writing, "1, 2, ..., 10" includes 10. `range`

is not a standard thing for mathematicians, so there was no reason to change Python's behavior, and `srange`

is the Sage version of that, so again, no reason to deviate from Python. But mathematicians will expect `[2, 4, .., 10]`

to include 10.

Copyright Sage, 2010. Some rights reserved under creative commons license. Content on this site is licensed under a Creative Commons Attribution Share Alike 3.0 license.