栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

Python

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Python

一行回答:

''.join(random.choice(string.ascii_uppercase + string.digits) for _ in range(N))

甚至更短,从Python 3.6开始,使用

random.choices()

''.join(random.choices(string.ascii_uppercase + string.digits, k=N))

加密更安全的版本;参见

https://stackoverflow.com/a/23728630/2213647

''.join(random.SystemRandom().choice(string.ascii_uppercase + string.digits) for _ in range(N))

详细而言,具有清除函数以进一步重用:

>>> import string>>> import random>>> def id_generator(size=6, chars=string.ascii_uppercase + string.digits):...    return ''.join(random.choice(chars) for _ in range(size))...>>> id_generator()'G5G74W'>>> id_generator(3, "6793YUIO")'Y3U'

它是如何工作的 ?

我们导入string,一个包含常见ASCII字符序列的模块,以及random一个处理随机生成的模块。

string.ascii_uppercase + string.digits
只是串联表示大写ASCII字符和数字的字符列表:

>>> string.ascii_uppercase'ABCDEFGHIJKLMNOPQRSTUVWXYZ'>>> string.digits'0123456789'>>> string.ascii_uppercase + string.digits'ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789'

然后,我们使用列表推导来创建“ n”个元素的列表:

`>>> range(4) # range create a list of ‘n’ numbers
[0, 1, 2, 3]

[‘elem’ for _ in range(4)] # we use range to create 4 times ‘elem’
[‘elem’, ‘elem’, ‘elem’, ‘elem’]`

在上面的例子中,我们使用[创建列表,但我们不这样做的id_generator功能,所以Python没有在内存中创建列表,但生成的飞行元素,一个接一个(更多相关信息点击这里)。

elem我们将要求Python创建一个从字符序列中选取的随机字符,而不是创建字符串’n’次:

>>> random.choice("abcde")'a'>>> random.choice("abcde")'d'>>> random.choice("abcde")'b'

因此,random.choice(chars) for _ in range(size)实际上是在创建一个size字符序列。从chars以下位置随机选择的字符:

>>> [random.choice('abcde') for _ in range(3)]['a', 'b', 'b']>>> [random.choice('abcde') for _ in range(3)]['e', 'b', 'e']>>> [random.choice('abcde') for _ in range(3)]['d', 'a', 'c']

然后,我们只将它们与一个空字符串连接起来,以便该序列成为一个字符串:

>>> ''.join(['a', 'b', 'b'])'abb'>>> [random.choice('abcde') for _ in range(3)]['d', 'c', 'b']>>> ''.join(random.choice('abcde') for _ in range(3))'dac'


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/370287.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号