我想在 python 中生成一些字母数字密码:
import string
from random import sample, choice
chars = string.letters + string.digits
length = 8
''.join(sample(chars,length)) # way 1
''.join([choice(chars) for i in range(length)]) # way 2
但我不喜欢两者都喜欢,因为:
i
变量,我找不到避免这种情况的好方法还有别的好选择吗?
另外,这里我们用 timeit
对100000次迭代进行了一些测试:
''.join(sample(chars,length)) # way 1; 2.5 seconds
''.join([choice(chars) for i in range(length)]) # way 2; 1.8 seconds (optimizer helps?)
''.join(choice(chars) for _ in range(length)) # way 3; 1.8 seconds
''.join(choice(chars) for _ in xrange(length)) # way 4; 1.73 seconds
''.join(map(lambda x: random.choice(chars), range(length))) # way 5; 2.27 seconds
获胜者是 ''.join(choice(chars) for _ in xrange(length))
。