python - 打印出给定字母的字母序列 - python

标签 python for-loop

在练习题中,我们给出了以下内容:

ALPHABET = "ABCD" # letters to use in sequences 
seq = 3 * [ "" ]
letterSeqs = [ ] # list of all the letter sequences

for seq[0] in ALPHABET:
    for seq[1] in ALPHABET:
        for seq[2] in ALPHABET:
            letterSeqs.append("".join(seq))

我们应该估计列表 letterSeqs 中的条目总数以及第一个和最后一个条目。谁能解释一下代码是如何工作的?

谢谢!

最佳答案

这是奇怪的代码,但合法......

首先:

seq = 3 * [ "" ]

…创建一个空字符串,以及一个由对该空字符串的三个引用组成的列表。

稍后,您执行此操作:

for seq[0] in ALPHABET:

这是棘手的一点。它遍历 ALPHABET,依次将 4 个字母中的每一个分配给 seq[0]。通常,您使用变量作为循环变量,而不是像这样的复杂目标。事实上,我猜老师这样做是为了赶你走。然而,它确实在某种程度上是有用的。

然后,对于这 4 次迭代中的每一次,您都执行以下操作:

    for seq[1] in ALPHABET:

每个外循环又循环了 4 次,因此总共有 16 个中间循​​环。然后,对于这 16 个中的每一个,你都这样做:

        for seq[2] in ALPHABET:

再次循环 4 次,每个中间循环,总共 64 个内部循环。

然后,对于每一个,你都这样做:

            letterSeqs.append("".join(seq))

此时,seq 将始终是 3 个单字符字符串的列表。这就是使用 seq[0] 作为循环变量的返回。也就是说,有更好的方法来做同样的事情。只需使用 for ifor jfor k,这可能是 i+j+k。 (如果你想推广到 3 个字符串以外的东西,静态嵌套循环结构是困难的部分,而不是单独的变量......)

因此,它将连接 成一个 3 字符的字符串。然后将其附加到空列表。

所以,最后,您得到了一个包含 64 个 3 个字符的字符串的列表。

关于python - 打印出给定字母的字母序列 - python,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20531357/

相关文章:

c# - 如何将双重递归方法转换为循环?

matlab - Mat循环的for循环矢量处理RGB图像中的像素

python - python的控制流语句的性能

python - 将 Javascript 数组转换为 python 列表?

python - 用单个值压缩多个值

excel - 循环不删除所有必需的行

c - 循环被忽略 - 指令仅执行一次

python - 在Python中通过文本文件的索引创建矩阵

python - 本地调试 python 3.7 AWS lambda

python - 在流式传输 Flask 响应时保持 SQLAlchemy session 处于事件状态