Python随机和int到字符串问题

时间:2009-12-12 16:18:17

标签: python random

我正在使用这行代码生成一个随机的整数列表:

random.sample(range(2000), 100)

使用此代码,我知道我的结果不会有双重值。他们可能是获得相同结果的更快方法吗?

现在我实际上必须将这些int转换为字符串。什么是最快的方式?

由于

4 个答案:

答案 0 :(得分:2)

使用xrange代替range

lst = random.sample(xrange(10**9), 100)

转换为字符串列表:

strings = map(str, lst)

作为一个字符串:

s = ''.join(strings)

答案 1 :(得分:1)

random.sample选择列表中的整数而不用替换。如果你试图避免重复,那么你正在做的是正确的方法。你的数字会变大吗?您需要在Python 2中使用Python 3或xrange,以避免生成该范围内的整个整数列表。

(感谢J.F. Sebastian指出如果使用xrange,random.sample不必生成所有整数。)

如果你想允许重复,你可以使用randrange:

randomInts = [random.randrange(2000) for _ in range(100)]

转换为字符串:

randomStrings = [str(x) for x in randomInts]

答案 2 :(得分:0)

import random
r = random.sample(range(2000), 100)
# One way to convert them to strings:
s = [str(x) for x in r]

答案 3 :(得分:0)

如果你要生成大量的随机数列表,你可以预先生成字符串以加速查找,就像这样。

stringcache = dict((val, str(val)) for val in range(2000))

while some_condition: 
    r_strings = map(stringcache.get, random.sample(range(2000), 100))