将列表中的所有字符串转换为整数的快速方法

时间:2017-09-21 10:33:11

标签: python python-2.7 numpy type-conversion

我已经浏览了Convert all strings in a list to int帖子

我想转换

results = ['1', '2', '3']

为:

results = [1, 2, 3]

我知道我可以通过

来做到这一点
  
      
  1. map(int,results)
  2.   

  
      
  1. results = list(map(int,results))
  2.   

我想要更快的方式可能是使用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")

如果在尝试使用数千个字符串时有任何方法可以让我知道

1 个答案:

答案 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和进程池。