元素类型转换为非常长的列表(将long转换为字符串)

时间:2015-01-09 11:18:09

标签: python numpy

将列表的所有元素从long类型转换为字符串的最快方法是什么?

我有:

x = [long(1.123), long(45.123), long(124.124124), ...]

并且需要:

    x = ['1.123', '45.123', '124.124124', ...]

我不想迭代整个列表并隐藏每个元素(它会很慢)。

我正在考虑使用numpy数组。你怎么看待它?

2 个答案:

答案 0 :(得分:3)

你必须以某种方式迭代,它可能会非常快:

>>> lst = [123, 456]
>>> map(str, lst)
... ["123", "456"]

或类似地

>>> [str(num) for num in lst]
... ["123", "456"]

无论如何,请注意,long(1.123)1L

答案 1 :(得分:0)

我的快速比较(IPython):

x_list = range(10000000)
def list1():
    y = map(str, x_list)

%timeit list1()

1个循环,最佳3:每循环2.37秒

import numpy as np
x_numpy = np.arange(10000000)
def list2():
    y = x_numpy.astype(str, copy=False)

%timeit list2()

1次循环,每次循环3:992 ms

就像我们看到第二个选项更快。你认为呢? :)