It should be faster to do `X.sort(key=lambda x: np.sum(x ** 2))`

```
In [37]: X = list(np.random.RandomState(1).normal(0, 1, (1000, 200)))

In [38]: timeit y1 = X.sort(key=lambda x: sum([x_i ** 2 for x_i in x]))
1 loops, best of 3: 458 ms per loop

In [39]: X = list(np.random.RandomState(1).normal(0, 1, (1000, 2000)))

In [40]: timeit y2 = X.sort(key=lambda x: np.sum(x ** 2))
100 loops, best of 3: 17.1 ms per loop

```