Python 'sets' are ideal for operations on unordered point cloud data, but Blender's vector class does not support hashing. This means that you either have to use lists (which may be slower or less convenient) or write an entirely new vector class instead of reusing the existing one.
To be hashable, the object must be immutable. That seems like a stiff requirement for something used in calculations.
From the Python docs:
If a class defines mutable objects and implements a __cmp__() or __eq__() method, it should not implement __hash__(), since hashable collection implementations require that a objectís hash value is immutable (if the objectís hash value changes, it will be in the wrong hash bucket).
That's a very good point.
It seems a shame, though, that I can't reuse the existing vector class at all, even though it's almost exactly what I need.
Maybe someone more versed in Python than I might have a suggestion?
random thought: convert the Vector to a tuple or a tuple-ish class? Tuples are immutable and therefore hashable. If you are just using them as data...