有没有做这方面的性能有什么区别:两段代码之间的区别?
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))
如果是,哪个更好?
有没有做这方面的性能有什么区别:两段代码之间的区别?
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))
如果是,哪个更好?
根据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
(来自文件,我假设?)或者对数据进行计算相比,这可能是相当不重要的。
无一不是完全压倒了由I/O输入()从用户 –
是对于不同的输入尺寸这是真的吗(即,两种替代方案的增长功能中不存在“交叉”)。 – dfri
@joelgoldstick依赖,也许'input'从管道到脚本文件来了。但我同意这可能无关紧要。 –
这是一个完美的问题来尝试自己; '进口时间; timeit.timeit(功能)'。 –
你对哪一点感兴趣?是否内联输入有区别,或者list(map(...))对列表理解有不同的表现? – jonrsharpe
第一个循环在那里,因为我需要创建T个数组。我需要知道如果使用map()并将每个字符串数组转换为int将提高性能,而不是使用嵌套循环来实现相同。 – snow