joinの話だが、
joinが受け取れるのは、リストだけではない。文字列だけを要素とするものだっ
たら、タプル、リスト、イテレータ、ジェネレータ、なんでもOKだ。

>>> def get_hoge():
...   for i in range(10):
...     yield "hoge" + str(i)
...
>>> "-".join(get_hoge())
'hoge0-hoge1-hoge2-hoge3-hoge4-hoge5-hoge6-hoge7-hoge8-hoge9'

そういうものすべてにjoinを実装するのではなく、何でも受け取れる
万能のjoinを文字列のメソッドとして用意するのは、一つの見識だと思う。

まあこういう万能関数が必要になるのは、Pythonのコレクション型が混乱して
いるせいだとも思うが。