我已经浏览了Convert all strings in a list to int帖子
我想转换
results = ['1', '2', '3']
为:
results = [1, 2, 3]
我知道我可以通过
来做到这一点
- map(int,results)
醇>
和
- results = list(map(int,results))
醇>
我想要更快的方式可能是使用numpy或更快。
实际代码是
from sys import stdin, stdout
import numpy as np
n = int(stdin.readline())
for i in range(0,n):
lone = 0
m = int(stdin.readline())
results = stdin.readline().split()
o = np.array(results, dtype=np.int64)
for j in range (0,m):
if o[j] in o[j+1:m]:
lone = lone +1
elif o[j] in o [0:j]:
lone = lone +1
else:
stdout.write(str(o[j]) + '\n')
if lone == m:
stdout.write ("-1 \n")
如果在尝试使用数千个字符串时有任何方法可以让我知道
答案 0 :(得分:2)
多处理是一种快速完成任务的方法(除了使用Numpy之外):
E.g:
In [11]: from multiprocessing import Pool
In [12]: pool = Pool(10)
In [13]: pool.map(int, [str(i) for i in range(500)])
Numpy将主要提供内存增益,因为您将处理原始类型而不是python对象,但也会提供不可忽略的速度增益。 像这样优化迭代的时间总是通过使用并行化完成的,所以我建议使用Numpy和进程池。