问题描述
我遇到了这样的一行python代码:
''.join(random.choice(string.ascii_lowercase + string.digits) for _ in range(8))
这有点令人困惑。有人知道它的作用吗?
解决方法
''.join(random.choice(string.ascii_lowercase + string.digits) for _ in range(8))
看到这样的表达式时,最好是逐步分解它。
-
''
是一个空字符串 -
.join(...)
将所有字符(...部分)连接起来并将其添加到空字符串中 -
random.choice(...)
将随机选择任何字符 -
string.ascii_lower + string_digits
创建一个包含所有小写字符和所有数字的字符串 -
for _ in range(8)
表示完成了8次(从技术上讲,这是一个生成器表达式)
结果,整个表达式将返回一个随机的8个字符的字符串,全部为小写或数字。
要了解有关生成器表达式的更多信息,请Dan Bader has a nice tutorial。如果您想知道如何提出这样的表达式,最好是研究Python文档,the official tutorial是一个很好的开始。
,我尝试了这段代码:
import random
import string
a = 'abcdefghijk'
print(a.join(random.choice(string.ascii_lowercase + string.digits) for _ in range(8)))
它给了我这个输出:
tabcdefghijk2abcdefghijk7abcdefghijktabcdefghijklabcdefghijkoabcdefghijkfabcdefghijk0
我认为它需要输入字符串,并使用随机的小写字母或随机数字将其粘贴7次。 (7次,因为两端各有一个,因此有8个连接数字)。