4

Python で 10 文字の英数字の長い文字列を生成したいと考えています。ここでは、英数字のリストからランダムなインデックスを選択する方法の一部を示します。

私の計画

set_list = ['a','b','c' ........] # all the way till I finish [a-zA-Z0-9]

index = random()    # will use python's random generator
some_char = setlist[index]

キャラクターをランダムに選択するより良い方法はありますか?

4

3 に答える 3

14

通常の方法は random.choice() です

>>> import string
>>> import random
>>> random.choice(string.ascii_letters + string.digits)
'v'
于 2013-02-12T12:02:30.323 に答える
4

これを試して:

def getCode(length = 10, char = string.ascii_uppercase +
                          string.digits +           
                          string.ascii_lowercase ):
    return ''.join(random.choice( char) for x in range(length))

走る:

>>> import random
>>> import string 
>>> getCode()
'1RZLCRBBm5'
>>> getCode(5, "mychars")
'ahssh'

リストがある場合は、次のようにできます。

>>> set_list = ['a','b','c','d']
>>> getCode(2, ''.join(set_list))
'da'

特殊記号を使用する場合は、文字列の句読点を使用できます。

>>> print string.punctuation
!"#$%&'()*+,-./:;<=>?@[\]^_`{|}~
于 2013-02-12T12:06:05.200 に答える
2

random()それ自体は関数ではありません。Python 3 での従来の方法は次のようになります。

import random
import string

random.choice(string.ascii_letters + string.digits)

string.lettersはロケールに依存し、Python 3 で削除されました。

于 2013-02-12T12:04:30.893 に答える