そもそも内包表記で無理に書く必要性を感じないが
def my_reduce(f, xs, init):
 def g(x, acc=[init]):
  acc[0] = f(acc[0], x)
  return acc[0]
 return [g(x) for x in xs][-1]
と書いてみるテスト。