3.x中的“ join”是否更慢?

当我遇到这个怪癖时,我只是在开玩笑。而且我想确保我没有疯。


以下代码(适用于2.x和3.x):


from timeit import timeit

print ('gen: %s' % timeit('"-".join(str(n) for n in range(1000))', number=10000))

print ('list: %s' % timeit('"-".join([str(n) for n in range(1000)])', number=10000))

在同一台计算机的每个版本上执行3次操作。


注意:为了节省空间,我在同一行上对时间进行了分组。


在我的Python 2.7.5上:


gen: 2.37875941643, 2.44095773486, 2.41718937347

list: 2.1132466183, 2.12248106441, 2.11737128131

在我的Python 3.3.2上:


gen: 3.8801268438439718, 3.9939604983350185, 4.166233972077624

list: 2.976764740845537, 3.0062614747229555, 3.0734980312273894

我不知道为什么会这样。...可能与字符串的实现方式有关吗?


慕尼黑的夜晚无繁华
浏览 180回答 2
2回答

凤凰求蛊

您不是在将苹果与苹果进行比较。在Python 2中,(几乎)在Python 3中str被称为bytes。在Python 3str中称为unicodePython 2。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python