我想生成长度从 1 到 max_length 的所有随机字符串。python中是否有内置函数可以做到这一点?如果没有,请告诉我如何执行此操作或将我引导至涵盖此类问题的帖子。提前致谢。
问问题
869 次
2 回答
3
随机字符串:
import random
def get_random_string(alphabet, slen):
return ''.join(random.choice(alphabet) for _ in xrange(slen))
print get_random_string('0123456789', 5) # prints e.g. 62247
所有字符串按字典顺序排列(感谢@DSM 提醒我itertools
):
import itertools
def gen_all_strings(alphabet, slen):
it = itertools.product(alphabet, repeat=slen)
return (''.join(s) for s in it)
print list(gen_all_strings('abc', 2)) # prints ['aa', 'ab', 'ac', 'ba', 'bb', 'bc', 'ca', 'cb', 'cc']
于 2012-09-16T17:15:48.767 回答
2
你可以使用random.sample()
:
In [28]: from string import ascii_lowercase as asl
In [29]: import random
In [30]: max_length=10
In [31]: for x in xrange(1,max_length+1):
....: ''.join(random.sample(asl,x))
....:
....:
Out[31]: 'k'
Out[31]: 'jy'
Out[31]: 'ldo'
Out[31]: 'ivlr'
Out[31]: 'gqelt'
Out[31]: 'gbvnqw'
Out[31]: 'baestog'
Out[31]: 'kyijhmvn'
Out[31]: 'toshxklwb'
Out[31]: 'wihtmouexg'
于 2012-09-16T17:18:03.663 回答