2017-11-03 11 views
0
wordlist = ['cat','dog','rabbit'] 
letterlist = [ ] 

、我々はこれを行うことができます:ダブル

letterlist = [word[i] for word in wordlist for i in range(len(word))] 

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

しかし、私はこの方法でそれをやろう:

letterlist = [character for character in word for word in wordlist] 

私はエラーを取得する:

NameError: name 'word' is not defined on line 9 

誰かが説明することができますリストの理解の仕組みを理解する上で間違いましたか?

ありがとうございました。

wordlist = ["cat", "dog", "rabbit"] 
letterlist = [character for character in word for word in wordlist] 

を書く

答えて

1

は、次のネストされたループに匹敵する:

​​

あなたがようwordを定義する前にcharacter in wordを参照しようとしているので、あなたのリストの内包表記と同じエラーがスローされます。このループ要素はwordlistです。あなたはちょうど逆順に注文しています。次のように試してください:

letterlist = [character for word in wordlist for character in word] 
+2

@ Kaneリスト内包表記では、通常のネストされたループと同様に、最初に外側ループを指定しています。 – MaxPowers