Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/365.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 两种铸造工艺的性能比较_Python_Casting - Fatal编程技术网

Python 两种铸造工艺的性能比较

Python 两种铸造工艺的性能比较,python,casting,Python,Casting,我正在从一个文件中读取行,并希望将它们转换为整数列表。该文件有一百万行。因此,我只是想知道哪个过程会使它更快。例如, lst=['10','12','31','41','15']是从文件中读取的当前行。 我可以使用地图功能进行铸造,比如- lst1=map(int,lst) 或者使用for函数,比如- lst2=[int(x)表示lst中的x] 哪种方法最有效、最快?[int(x,10)for x in lst]至少比您的两种方法快得多: >>> from timeit imp

我正在从一个文件中读取行,并希望将它们转换为整数列表。该文件有一百万行。因此,我只是想知道哪个过程会使它更快。例如,
lst=['10','12','31','41','15']
是从文件中读取的当前行。 我可以使用地图功能进行铸造,比如-
lst1=map(int,lst)
或者使用for函数,比如-
lst2=[int(x)表示lst中的x]
哪种方法最有效、最快?

[int(x,10)for x in lst]
至少比您的两种方法快得多:

>>> from timeit import timeit
>>> setup = "lst = ['10','12','31','41','15']"

>>> timeit('map(int, lst)', setup)
4.454881024529442

>>> timeit('[int(x) for x in lst]', setup)
4.7153410495946275

>>> timeit('[int(x, 10) for x in lst]', setup)
1.6508196962672343

使用Python2.7.11进行测试(我假设您使用Python2,因为否则您的
lst1=map(…)
会有误导性)。

除非每个列表都很长,否则map不会更快,您如何将文件内容读入每个列表?同时,每个实现的时间安排也会回答您的问题,这样您就可以自己回答这个问题了。这叫一个<代码>映射和列表理解将具有类似的性能。无论如何,文件I/O可能是瓶颈。我建议您使用“for”进行阅读,列表不长,仅限10-15个整数。map返回生成器对象(不会一次计算所有值)。在你的例子中,如果你的列表很小,就使用压缩列表。谢谢。我真的很感激。在Python3上,我看到了微不足道的性能差异。事实上,我得到的最初理解是稍微快一点,实际上
list(map(int,lst))
是最快的方法,同样,也只是稍微快一点。这是Python2
int
中的一个问题,在Python3中得到了修复吗?@juanpa.arrivillaga是的,在Python3中,我也得到了微小的差异,都得到了1.25秒左右的时间。我不知道为什么Python2和Python3之间有这么大的不同。我只是从一些“为什么float比int快”的线程中知道explicit-base-10的“技巧”,也许你可以在那里找到更多的解释。