It is perhaps difficult to decide what to suggest without knowing what kind of update you are going to do.
Perhaps you could adapt something like this
t = Range[20];
f[t_] := (Print[Drop[t, {3}]]; Drop[t, {3}]);
NestWhile[f, t, Length[#] > 6 &]
but there is a lot to understand about what is going on inside that.
There are an assortment of other iterative functions available, but almost all those are very different from the procedural way of thinking.