我正在尝试创建一个庞大的数字列表
a = '1 1 1 2 2 0 0 1 1 1 1 9 9 0 0'
(超过一千万)。
我尝试过这些方法:
%timeit l = list(map(int, a.split()))
它是4.07 µs per loop
%timeit l = a.split(' ')
这是462 ns per loop
%timeit l = [i for i in a.split()]
花了1.19 µs per loop
据我所知,第2和第3个变体是字符列表,而第一个是整数列表,这很好。但随着元素数量超过一千万,创建一个列表最多可能需要6秒。这对我来说太长了。 有人能告诉我更快更有效的方法吗。
由于
答案 0 :(得分:4)
在纯Python中,不使用第三方扩展,<pre style="font-size:120%">
<?php echo file_get_contents('kpop.txt') ?>
</pre>
应该是将输入拆分为列表的最快方法。 a.split()
函数只有一个作业,它专门用于此用途。
答案 1 :(得分:3)
如果您知道您的输入包含由单个空格分隔的单个数字,那么您还可以考虑:
b = ord('0')
[ord(a)-b for a in A[::2]]
这会在我的计算机上在0.2秒内生成1000万个整数的列表。
答案 2 :(得分:2)