可以将for循环用作Python中函数变量的一部分吗?

问题描述

我遇到了这样的一行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个连接数字)。