The reason why it behaves this way is because the code[0] command regenerates the codeword every time you call it. The reason for doing so is in http://trac.sagemath.org/ticket/13694
So, code[0][0]=1 is indeed changing the vector, but it is not changing the vector that is displayed by the next code[0] command. If you want a set of immutable vectors, then you can do something like this: sage: C = codes.HammingCode(3, GF(2)) sage: codevectors = C.list() sage: for c in codevectors: c.set_immutable() sage: sage: D = {c: c.hamming_weight() for c in codevectors} On Monday, May 12, 2014 11:12:19 PM UTC+8, Gerli Viikmaa wrote: > > Hi, > > Consider the following code (the field is arbitrary in this case) > sage: code = codes.HammingCode(2, GF(4,'a')) > > The codewords (vectors) cannot be changed (note the absence of an error): > sage: code[0] > (0, 0, 0, 0, 0) > sage: code[0][0] = 1 > sage: code[0] > (0, 0, 0, 0, 0) > > yet they are not immutable, even when trying to set them so: > sage: code[0].is_immutable() > False > sage: code[0].set_immutable() > sage: code[0].is_immutable() > False > > Is there any particular reason why the codewords are not immutable if they > cannot be changed anyway? > > If they were, using them as dictionary keys would be less of a hassle: > sage: {code[0]: "element"} > TypeError: mutable vectors are unhashable > > I guess the current options are > sage: v = code[0] > sage: v.set_immutable() > sage: {v: "element"} > or > sage: {tuple(code[0]): "element"} > neither of which is particularly elegant. > > Is there a way to set the all of the codewords as immutable? > > I'm using Sage version 6.1.1 on a Linux machine. > > Gerli > -- You received this message because you are subscribed to the Google Groups "sage-support" group. To unsubscribe from this group and stop receiving emails from it, send an email to sage-support+unsubscr...@googlegroups.com. To post to this group, send email to sage-support@googlegroups.com. Visit this group at http://groups.google.com/group/sage-support. For more options, visit https://groups.google.com/d/optout.