(1) Using = is simply setting y1 to point to the object that x1 points to, so y1 and x1 both points to the same Python object.
(2) Clone made a copy to x2, so even though they are still equal, they aren’t the same object. y1 points to the cloned object while x1 points to the original one.
It depends on your purpose because they have different behavior. If you are only doing simple calculations, I suggest (1). One thing to note is that because (2) uses clone, (2) uses more memory.