背景

「エキスパートPythonプログラミング 改訂2版」の11.3.1章「CPU使用量のプロファイル」を読んでいます。

質問

文字列連結よりstr.join()の方が速いはずなのに、以下の測定では文字列連結の方が速いように見えています。
これはなぜでしょうか?

$ python3 -m timeit -s 'a=map(str, range(1000))' '"".join(a)'
1000000 loops, best of 3: 0.124 usec per loop

$ python3 -m timeit -s 'a=map(str, range(1000)); s=""' 'for i in a: s+=i'
10000000 loops, best of 3: 0.0295 usec per loop

本書には「読書への課題」となっていましたが分からなかったので、ここで質問しました。
本書には、以下の通り記載されていました。

落とし穴はsetup引数の使い方と、Python3におけるmapの振る舞いにあります。

環境

  • Python 3.6.6