0

现在我们的代码在 set 中存储了 3,000,000 个 id,格式为字符串,我尝试使用列表推导将其转换为 int。但是它花费了 5 秒,我怎样才能减少将这 3,000,000 个 id 的字符串转换为 int 的成本?

这是我的测试代码:

import random
import time


a = set()
for i in xrange(3088767):
    a.add(str(random.randint(10005907, 100000000)))

start = time.time()
ld = [int(i) for i in a]
end = time.time()
print end-start

结果是:

$python  -V
Python 2.6.5
$python  ld.py
5.53777289391
4

2 回答 2

5
ld = map(int, a)

应该更快,也是您不考虑其他python实现的唯一选择

于 2013-04-27T02:53:34.247 回答
2

尝试使用PypyCython

这些工具可以让你的代码飞起来!(Pypy,特别是,在我的 PC 中 Pypy 将代码加速了 4 倍..)

于 2013-04-27T02:57:42.730 回答