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

コードがどのように計算され、「rabbit」のすべてが綴られていないのか、および/または「r」、「b」、「i」と綴られる理由がわかりません。何が起こっているか知っている人はいますか?

4

2 に答える 2

1

letterlistこのifブロックを使用して、一意の文字をそれぞれ追加しています。

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

レターが既に表示されている場合、再度追加されることはありません。つまり、2 回目a('rabbit')、2 回目b('rabbit')、2 回目と 3 回目tはリストに追加されません。

于 2016-01-17T03:26:34.930 に答える
0

コードのこの部分はif aletter not in letterlist:、文字が既にリストに追加されているかどうかを確認します。その場合、再度追加することはありません。

したがって、基本的に繰り返し文字を追加することはありません。そのため、出力は['c', 'a', 't', 'd', 'o', 'g', 'r', 'b', 'i']. そこには繰り返しの手紙はありません。

letterlistコードの 2 番目の部分は、リスト全体を繰り返し処理し、何があっても追加します。そのため、すべての文字が追加され、['c', 'a', 't', 'd', 'o', 'g', 'r', 'a', 'b', 'b', 'i', 't']結果として得られます。

于 2016-01-17T03:24:49.980 に答える