pythonでflatten

rubyには配列を平滑化するflattenなんていうメソッドがありますが、
意外にもpythonにはありませんでした。(当然あるものと思ってましたが^^;)
ググってみるとやっぱいろんな人がサンプルコード書いてますね。
そこで、自分でもflattenかいてみました。
引数がイテレータであれば平滑化します。
再帰でしかもジェネレータなんでちょっとわかりにくい?

def flatten(item):
    if hasattr(item, '__iter__'):
        for it in item:
            for _ in flatten(it):
                yield _
    else:
        yield item