关于string:如何在python中生成随机字母?

How to generate random letters in python?

在python中有没有生成随机字母的方法?我遇到了一个代码,在这里可以从a-z生成随机字母。

例如,下面的代码生成以下输出。

1
2
3
4
5
6
7
8
9
10
import pandas as pd
import numpy as np
import string

ran1 = np.random.random(5)
print(random)
[0.79842166 0.9632492  0.78434385 0.29819737 0.98211011]

ran2 = string.ascii_lowercase
'abcdefghijklmnopqrstuvwxyz'

但是,我希望生成随机字母,其中输入为随机字母数(示例3),所需输出为[a,f,c]。事先谢谢。


将字符串转换为列表,然后使用numpy.random.choice。您将得到一个数组,但如果需要,您可以将其作为列表。

1
2
3
4
5
6
import numpy as np
import string

np.random.seed(123)
list(np.random.choice(list(string.ascii_lowercase), 10))
#['n', 'c', 'c', 'g', 'r', 't', 'k', 'z', 'w', 'b']

如您所见,默认行为是使用替换进行采样。如果需要,可以通过添加参数replace=False来更改该行为。


下面是一个修改自https://pythontips.com/2013/07/28/generating-a-random-string的想法/

1
2
3
4
5
import string
import random

def random_generator(size=6, chars=string.ascii_lowercase):
    return ''.join(random.choice(chars) for x in range(size))