Just want to note that you've avoided some pitfalls in your code.
1) You do not "append" to strings. This isn't possible anyways, because strings are immutable, so "appending" to strings really means to re-build the entire thing, this turns out to be very expensive.
2) You loop backwards and append to a list. You could also have looped forwards and have inserted at the front of the list, but this is also very expensive, because to do that, all the already existing elements have to move one step to make room at the front. But appending at the end of the list takes constant time (doesn't matter how big the list already is)
As probably mentioned in the exercise instructions, for the purpose of the exercise it's cheating to use slicing:
""" redundant function really, just use slicing """
But this is exactly how one would normally do it and is going to be faster than anything you could possibly implement yourself since the built-in stuff plays by other rules than your own code. (It's written in C)
Slicing might look a little intimidating, but its three parameters matches that of the
range function: start, exclusive stop, step. And leaving blank means to use default values.
[::-1] thus means negative 1 step (backwards) and it'll default to starting at the end and stopping after the beginning.