Python 随机数和整数转字符串问题
我正在用这一行代码生成一个随机的整数列表:
random.sample(range(2000), 100)
通过这段代码,我知道我的结果中不会有重复的值。有没有更快的方法可以达到同样的效果呢?
现在我实际上需要把这些整数转换成字符串。有什么最快的方法吗?
谢谢!
4 个回答
0
如果你需要生成很多随机数字的列表,可以提前生成这些字符串,这样在查找时会更快,类似于下面这样。
stringcache = dict((val, str(val)) for val in range(2000))
while some_condition:
r_strings = map(stringcache.get, random.sample(range(2000), 100))
2
使用 xrange
代替 range
:
lst = random.sample(xrange(10**9), 100)
要把它转换成字符串列表:
strings = map(str, lst)
作为一个字符串:
s = ''.join(strings)
1
random.sample 从列表中选择整数时,是不重复的。如果你想避免重复,那么你现在的方法是对的。你的数字会不会变得很大呢?你需要使用 Python 3,或者在 Python 2 中使用 xrange,这样就不会生成整个范围内的整数列表。
(感谢 J.F. Sebastian 指出,如果使用 xrange,random.sample 并不需要生成所有整数。)
如果你想允许重复,可以使用 randrange 来代替:
randomInts = [random.randrange(2000) for _ in range(100)]
要把这些数字转换成字符串,可以这样做:
randomStrings = [str(x) for x in randomInts]