Я не совсем уверен, что не так с вашим кодом, но во втором и третьем if-операторах, по-видимому, используется встроенная функция обращения со списком, которую запрещает исходная проблема.
Что бы я сделал, это определил длина более длинного списка, затем переберите оба списка в обратном порядке.
def back_interleave(first, second):
newlist = []
# You want to iterate through the length of the longer list
length = max(len(first), len(second))
for x in range(length):
# start appending elements from the back of the list
index = -1*(x+1)
if x < len(first):
newlist.append(first[index])
if x < len(second):
newlist.append(second[index])
return newlist