两段代码之间的区别?

时间:2016-07-04 14:47:45

标签: python performance python-3.x

执行此操作的性能方面是否有任何差异:

for i in range(T):  
      arr = [int(arr_temp) for arr_temp in input().strip().split(' ')]

和此:

for i in range(T):
    arr = input().strip().split(' ')
    arr = list(map(int, arr))

如果是,哪个更好?

1 个答案:

答案 0 :(得分:2)

根据IPython的%timeit函数,map有点快:

In [16]: s = ' '.join(map(str, range(1000)))

In [17]: %timeit [int(c) for c in s.split()]
10000 loops, best of 3: 171 µs per loop

In [18]: %timeit list(map(int, s.split()))
10000 loops, best of 3: 138 µs per loop

使用IPython 1.2.1和Python 3.4.3进行测试,输入大小不同(range(1000)range(10)range(100000))。

当然,有趣的问题是:代码的这一部分是否会减慢您的程序(假设这就是您要求的原因,而不是出于纯粹的好奇心)。与例如,阅读input(从文件,我推测?)或对数据进行计算相比,它可能是非常微不足道的。