On Mon, Dec 29, 2008 at 2:43 PM, Justin Walker <jus...@mac.com> wrote: > > > On Dec 29, 2008, at 5:23 PM, John Cremona wrote: > >> >> Maybe I missed the point here but after > > The point was a minor one... > >> R.<x1,x2>=QQ[] >> M=matrix(R,1,2,[x1+x2,x1*x2]) >> >> you can get at the entries like this: >> sage: M[0,0] >> x1 + x2 >> sage: M[0,1] >> x1*x2 > > For the OP, it was surprising that "list(M)" did not return a list of > the entries of M. The reason is that (for Python, I think), M is a > list of "rows". The expression "M.list()" does return a list of the > entries of M, which is what one might naively expect of the former > expression. > > In the world of objects, its not always clear what the object is, I > guess. >
If X is a python object, then list(X) literally makes the list list X[0], X[1], etc., until the Python interpreter gets and IndexError. It doesn't call "X.list()". I think that list(X) and X.list() are different for matrices is an unfortunate inconsistency. The best fix I can think of would be to eliminate the list method entirely, and have a method X.list_of_entries() or X.entries(). Just changing .list()'s definition would be dangerous, since a lot of code probably depends on the current definition. Changing list(X) to behave differently would likely require making X[0] return the first entry of X rather than the first row, which would be really confusing. That X[0] returns the first row instead of the first column is a completely arbitrary choice. It had to be made, so it was made. William --~--~---------~--~----~------------~-------~--~----~ To post to this group, send email to sage-support@googlegroups.com To unsubscribe from this group, send email to sage-support-unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/sage-support URLs: http://www.sagemath.org -~----------~----~----~----~------~----~------~--~---