python – 最轻松的方式来创建一个随机字符串和一个随机的十六进制数

什么是最轻量级的方式来创建一个30个字符的随机字符串,如下所示?

ufhy3skj5nca0d2dfh9hwd2tbk9sw1

和十六进制的30位数字,如下面的?

8c6f78ac23b4a7b8c0182d7a89e9b1

最佳答案
我有一个更快的十六进制输出。使用与上述相同的t1和t2:

>>> t1 = timeit.Timer("''.join(random.choice('0123456789abcdef') for n in xrange(30))", "import random")
>>> t2 = timeit.Timer("binascii.b2a_hex(os.urandom(15))", "import os, binascii")
>>> t3 = timeit.Timer("'%030x' % random.randrange(16**30)", "import random")
>>> for t in t1, t2, t3:
...     t.timeit()
... 
28.165037870407104
9.0292739868164062
5.2836320400238037

t3只做一次调用随机模块,不必构建或读取列表,然后用字符串格式化。

转载注明原文:python – 最轻松的方式来创建一个随机字符串和一个随机的十六进制数 - 代码日志