Как насчет простого обращения строки.
>>> x = 'abcd'
>>> x[::-1]
'dcba'
>>>
По вашему коду:
Никогда не изменяйте список, с которым вы перебираете. Это может вызвать незначительные ошибки.
>>> strList = [1, 2, 3, 4, 5]
>>> reverseCharList = []
>>> for someChar in strList:
... print strList
... reverseCharList.append(strList.pop())
... print strList
...
[1, 2, 3, 4, 5] <-- Iteration 1
[1, 2, 3, 4]
[1, 2, 3, 4] <-- Iteration 2
[1, 2, 3]
[1, 2, 3] <-- Iteration 3
[1, 2]
См. Следующее. Так как вы используете итератор (для .. в ..).
Вы можете видеть детали итератора напрямую и то, как мутирование списка портится с итератором.
>>> strList = [1, 2, 3, 4, 5]
>>> k = strList.__iter__()
>>> k.next()
1
>>> k.__length_hint__() <--- Still 4 to go
4
>>> strList.pop() <---- You pop an element
5
>>> k.__length_hint__() <----- Now only 3 to go
3
>>>
>>> k.next()
2
>>> k.__length_hint__()
2