[quote:2yi4f932]but when you sort y (to put it in numerical order) it affects x too
This is pretty much how C++ works, by default it uses reference semantics on arrays. I guess Python's x[:] is a way of explicitly calling the copy constructor (if Python calls it that), which is probably a good idea, so you don't accidentally end up copying around large arrays unnecessarily. In real world apps, the majority of the time arrays will be passed around by reference semantics.
As for mixing strings and ints, it's generally a grey area anyway. It works pretty similarly to Construct (you can't add or perform operations on mixed types usually, except for special operators like string concatenation &). Operations like "50" + 1 are intrinsically ambigious, do you want to get 51 or 501? Rather than allow something that may be unexpected, the general solution is to disallow it - this is not any particular language's fault. You should use explicit string or integer conversion functions to make it work how you want.