[sage-support] Re: Set question

2008-03-07 Thread David Joyner

On Fri, Mar 7, 2008 at 10:57 AM, William Stein <[EMAIL PROTECTED]> wrote:
>
>  On Fri, Mar 7, 2008 at 7:35 AM, David Joyner <[EMAIL PROTECTED]> wrote:
>  >
>  >  Hi:
>  >  Is there a reason why Set only applies to hashable elements?
>
>  Set is implemented using the Python language's builtin set type, which
>  in turn requires that elements by hashable.

Since SAGE's uniq also required the elements to be hashable, I wonder
if anyone things that the above routine should replace it?


>
>
>  >  It is faster than
>  >  http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/52560
>  >  at removing duplicates from a list (which is what I need) but does not
>  >  apply, for example, to lists of matrices:
>
>  FYI -- If you make the matrices immutable then you can hash them.

Thanks.

>
>
>  >
>  >
>  >  sage: MS = MatrixSpace(GF(7),2,2)
>  >  sage: A = MS.identity_matrix()
>  >  sage: B = 2*A
>  >  sage: L = [A,A,B]
>  >  sage: Set(L)
>  >  
> ---
>  >   Traceback (most recent call 
> last)
>  >
>  >  /mnt/drive_hda1/sagefiles/sage-2.10.3.rc2/ in ()
>  >
>  >  
> /home/wdj/wdj/sagefiles/sage-2.10.3.rc2/local/lib/python2.5/site-packages/sage/sets/set.py
>  >  in Set(X)
>  >  78 raise TypeError, "Element has no defined underlying set"
>  >  79 elif isinstance(X, (list, tuple, set, frozenset)):
>  >  ---> 80 return Set_object_enumerated(frozenset(X))
>  >  81 try:
>  >  82 if X.is_finite():
>  >
>  >  /mnt/drive_hda1/sagefiles/sage-2.10.3.rc2/matrix_modn_dense.pyx in
>  >  sage.matrix.matrix_modn_dense.Matrix_modn_dense.__hash__()
>  >
>  >  /mnt/drive_hda1/sagefiles/sage-2.10.3.rc2/matrix_dense.pyx in
>  >  sage.matrix.matrix_dense.Matrix_dense._hash()
>  >
>  >  : mutable matrices are unhashable
>  >
>  >
>  >  - David Joyner
>  >
>  >  >
>  >
>
>
>
>  --
>  William Stein
>  Associate Professor of Mathematics
>  University of Washington
>  http://wstein.org
>
>  >
>

--~--~-~--~~~---~--~~
To post to this group, send email to sage-support@googlegroups.com
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at 
http://groups.google.com/group/sage-support
URLs: http://www.sagemath.org
-~--~~~~--~~--~--~---



[sage-support] Re: Set question

2008-03-07 Thread William Stein

On Fri, Mar 7, 2008 at 7:35 AM, David Joyner <[EMAIL PROTECTED]> wrote:
>
>  Hi:
>  Is there a reason why Set only applies to hashable elements?

Set is implemented using the Python language's builtin set type, which
in turn requires that elements by hashable.

>  It is faster than
>  http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/52560
>  at removing duplicates from a list (which is what I need) but does not
>  apply, for example, to lists of matrices:

FYI -- If you make the matrices immutable then you can hash them.

>
>
>  sage: MS = MatrixSpace(GF(7),2,2)
>  sage: A = MS.identity_matrix()
>  sage: B = 2*A
>  sage: L = [A,A,B]
>  sage: Set(L)
>  ---
>   Traceback (most recent call last)
>
>  /mnt/drive_hda1/sagefiles/sage-2.10.3.rc2/ in ()
>
>  
> /home/wdj/wdj/sagefiles/sage-2.10.3.rc2/local/lib/python2.5/site-packages/sage/sets/set.py
>  in Set(X)
>  78 raise TypeError, "Element has no defined underlying set"
>  79 elif isinstance(X, (list, tuple, set, frozenset)):
>  ---> 80 return Set_object_enumerated(frozenset(X))
>  81 try:
>  82 if X.is_finite():
>
>  /mnt/drive_hda1/sagefiles/sage-2.10.3.rc2/matrix_modn_dense.pyx in
>  sage.matrix.matrix_modn_dense.Matrix_modn_dense.__hash__()
>
>  /mnt/drive_hda1/sagefiles/sage-2.10.3.rc2/matrix_dense.pyx in
>  sage.matrix.matrix_dense.Matrix_dense._hash()
>
>  : mutable matrices are unhashable
>
>
>  - David Joyner
>
>  >
>



-- 
William Stein
Associate Professor of Mathematics
University of Washington
http://wstein.org

--~--~-~--~~~---~--~~
To post to this group, send email to sage-support@googlegroups.com
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at 
http://groups.google.com/group/sage-support
URLs: http://www.sagemath.org
-~--~~~~--~~--~--~---