0

我想知道为什么这段代码:

wordlist = ['cat','dog','rabbit']
letterlist=[]
for aword in wordlist:
    for aletter in aword:
        if aletter not in letterlist:
            letterlist.append(aletter)
print(letterlist)

打印 ['c', 'a', 't', 'd', 'o', 'g', 'r', 'b', 'i']

而这段代码:

wordlist = ['cat','dog','rabbit']
letterlist=[]
for aword in wordlist:
    for aletter in aword:
        letterlist.append(aletter)
print(letterlist)

打印 ['c', 'a', 't', 'd', 'o', 'g', 'r', 'a', 'b', 'b', 'i', 't']

我不明白代码是如何计算的,也没有拼出所有的“兔子”和/或为什么它拼出“r”、“b”、“i”?有谁知道发生了什么?

4

2 回答 2

1

letterlist您正在使用此if块添加每个唯一字母:

if aletter not in letterlist:
    letterlist.append(aletter)

如果该字母已被看到,则不会再次附加该字母。这意味着您第二次看到a(在“rabbit”中)、第二次b(在“rabbit”中)以及第二次和第三次看到t时,它们都不会添加到列表中。

于 2016-01-17T03:26:34.930 回答
0

这部分代码if aletter not in letterlist:检查字母是否已添加到列表中。如果是这样,您将不会再次添加它。

所以基本上你不会添加任何重复的字符。这就是为什么输出是['c', 'a', 't', 'd', 'o', 'g', 'r', 'b', 'i']. 那里没有重复的字母。

第二段代码只是迭代整个列表并附加到letterlist任何内容。这就是添加所有字母的原因,您会得到['c', 'a', 't', 'd', 'o', 'g', 'r', 'a', 'b', 'b', 'i', 't']结果。

于 2016-01-17T03:24:49.980 回答