sum と reduce
今日、list に対しても sum が使えることに気づいた。ということは以下の2つは等価だ。
import operator reduce(operator.add, [[1, 2, 3], [4, 5, 6], [7, 8, 9]], [])
sum([[1, 2, 3], [4, 5, 6], [7, 8, 9]], [])
じゃあ __add__ が定義されていればなんでもいいのかと思って ''.join(seq) も sum で置き換えられるんじゃないかと思ったら。
>>> sum(["abc", "def"], "") Traceback (most recent call last): File "<stdin>", line 1, in ? TypeError: sum() can't sum strings [use ''.join(seq) instead]
むぅ。TOOWTDI*1 というやつか?
*1:There's only one way to do it