2

1 から max_length までの長さのランダムな文字列をすべて生成したいと考えています。それを行うPythonの組み込み関数はありますか?そうでない場合は、これを行う方法を教えてください。または、この種の問題をカバーする投稿に誘導してください。前もって感謝します。

4

2 に答える 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 に答える