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

打印给定字母的字母序列-python,python,for-loop,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("

在练习题中,我们得到以下信息:

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))
我们应该估计列表letterseq中的条目总数以及第一个和最后一个条目。有人能解释一下代码是如何工作的吗


谢谢

这是奇怪的代码,但合法

第一:

seq = 3 * [ "" ]
…创建一个空字符串,以及一个包含对该空字符串的三个引用的列表

稍后,您将执行以下操作:

for seq[0] in ALPHABET:
    for seq[1] in ALPHABET:
        for seq[2] in ALPHABET:
            letterSeqs.append("".join(seq))
这是棘手的一点。它循环遍历
字母表
,将4个字母中的每一个依次分配给
序列[0]
。通常,使用变量作为循环变量,而不是像这样的复杂目标。事实上,我猜老师这样做是为了把你赶走。然而,事实证明它确实是有用的

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

for seq[0] in ALPHABET:
    for seq[1] in ALPHABET:
        for seq[2] in ALPHABET:
            letterSeqs.append("".join(seq))
每个外环再循环4次,总共16个中间环。然后,对于这16项中的每一项,你都要这样做:

for seq[0] in ALPHABET:
    for seq[1] in ALPHABET:
        for seq[2] in ALPHABET:
            letterSeqs.append("".join(seq))
每个中间循环重复循环4次,总共64个内部循环

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

for seq[0] in ALPHABET:
    for seq[1] in ALPHABET:
        for seq[2] in ALPHABET:
            letterSeqs.append("".join(seq))
此时,
seq
将始终是一个包含3个单个字符串的列表。这就是使用
seq[0]
作为循环变量的回报。尽管如此,还是有更好的方法来做同样的事情。只需对i使用
,对j
使用
,对k
使用
,这可以是
i+j+k
。(如果您想推广到3个字符串以外的其他内容,静态嵌套循环结构是最难的部分,而不是单独的变量…)

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

因此,在最后,您得到了一个包含64个3个字符字符串的列表

for _ in container:
将运行
len(容器)
次。当嵌套三层时,它会运行

len(container) ** 3 == 4 ** 3 == 64
时代。每次附加一个
str
对象时,
“”。join(seq)
,因此末尾的长度将为64


追加第一个项目时,
seq
中的所有位置都有
字母表中的第一个值,因此该项目为
“AAA”
。最后,它们都有
字母表中的最后一个值,因此最后一项将是
“DDD”

在它运行之后就不会了。你试过运行它吗?也许可以输入一些
print
语句来查看哪些值在哪里?具体来说,您不清楚什么?在我看来,这不是一个好的考试问题opinion@CDspace我试着运行它,得到的答案是64,‘AAA’,“DDD”I完全不知道这样一个事实:for循环定义中的
target\u list
项:
for\u stmt::=”for“expression\u list”中的“target\u list”:“suite
可以是列表中的索引元素。然而,文档中的句子,每个项目依次被分配到目标列表,使用分配的标准规则涵盖了这种情况,但我认为它应该更加明确。医生在这一点上不好。你觉得这个怎么样?在提出这个问题之前,你知道这个特点吗?