Pythonでunfold
foldに似たreduceがあるなら、unfoldに似た関数があってもいいじゃない。
def unreduce(f,x): y = f(x) while y != None: yield y[0] y = f(y[1])
これで整数を各桁ごとに分解するコードが簡単に書けちゃうよ。
base = 10 # 10進数にしたときの各桁に分解する for x in unreduce(lambda m: None if m <= 0 else (m % base, m / base ) ,n): print x