Использование обратного (массива) будет, вероятно, лучшим маршрутом.
>>> array = [1,2,3,4]
>>> for item in reversed(array):
>>> print item
Если вам нужно понять, как можно реализовать это, не используя встроенный reversed
.
def reverse(a):
midpoint = len(a)/2
for item in a[:midpoint]:
otherside = (len(a) - a.index(item)) - 1
temp = a[otherside]
a[otherside] = a[a.index(item)]
a[a.index(item)] = temp
return a
Это должно занять O (N) время.
Я использовал только контрольные суммы Adler / Fletcher , которые работают так, как вы описываете.
Здесь есть хорошее сравнение реализаций хэша / контрольной суммы crypto ++ здесь .