To say that solving ML problems using Python is easy, is the same like saying that developing Web applications or video games using Python is easier than when using other technologies. The answer will always be yes and no. There is nothing in the design of the language that makes it more suitable to solving these kinds of problems than other languages.
That said, there is something in the nature and design thinking behind Python, which makes prototyping an incredibly pleasant experience. I know this first-hand. I have spent almost a decade programming medium and large-scale applications using Java. Java is stable and very readable - understanding large code bases is a breeze. However, this efficiency comes at the price that while writing, the developer is left with little freedom for experimentation. Not that freedom is not there, it is just that every straying off the original idea, leads to a lot of boilerplate changes and ultimate fatigue.
Python is the complete opposite of that. While I have not yet had the chance to see Python in a large project, starting small experiments from scratch is a no-brainer. Changing those experiments quickly when the original hypothesis proves to be wrong, is just as easy as well. This is on of the reasons why Python has such a large following among the academic circles, where quickly proving and disproving hundreds of hypotheses is what people in the academic world do for a living.
Being the darling of the academic world, it should not come as a surprise that the majority of the good ML libraries have been originally developed for Python.
So, to sum it up, there is nothing in Python that makes it particularly suitable for solving ML problems, besides the fact that quickly scrapping experiments is very easy.