Python 随机数和整数转字符串问题

1 投票
4 回答
4721 浏览
提问于 2025-04-15 16:57

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

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]

撰写回答