Here is another approach. I assume your list is a macro; it doesn't have to be. The \foreach loop gives you the transformed list
\mytranslist -> \do{4}\do{3}\do{2}\do{1}
You can then define \do to be any operator/processor that you wish. For example, to print the list, I define \do to yield the format [x].
\documentclass{article}
\usepackage{pgffor}
\begin{document}
\def\mylist{1,...,4}
\def\do#1{%
\xdef\mytranslist{\noexpand\do{#1}%
\ifdefined\mytranslist\unexpanded\expandafter{\mytranslist}\fi
}%
}
\let\mytranslist\undefined
\foreach \x in \mylist {\do{\x}}
% To print the list:
\def\do#1{[#1]}
\mytranslist
\end{document}

With the latest version of loops package, you need less estate:
\documentclass{article}
\usepackage{loops}[2012/10/10]
\begin{document}
\def\mylist{1,...,4}
\foreachfox [list is a macro, reverse list] \mylist {[#1]}
\end{document}
loops.sty? Has it made to CTAN already? – Oct 15 '12 at 00:19comp.text.tex, the usual notice board used by CTAN. You may have to wait a few hours or days. – Ahmed Musa Oct 15 '12 at 00:23