Python中的控件结构

时间:2016-01-17 03:22:54

标签: python list for-loop append control-structure

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

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','我']

这段代码:

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

打印[' c',' a'' t',' d',' o', ''',' a','''''' i& #39;,' t']

我不明白代码是如何计算出来的,并且没有拼出所有的“兔子”和“兔子”。和/或为什么它拼写出来'' b''我'?任何人都知道发生了什么?

2 个答案:

答案 0 :(得分:1)

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

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

如果已经看到该字母,则不会再次附加该字母。这意味着您第二次看到a('兔子'),第二次b('兔子')和第二次和第三次看到t,它们未添加到列表中。

答案 1 :(得分: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']