2017-11-03 130 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 

有人能解釋我理解列表理解如何工作的錯誤?

謝謝。

回答

1

寫作

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

媲美以下嵌套循環:

​​

這個循環將拋出相同的錯誤列表理解,因爲你正試圖定義word作爲之前引用character in word元素wordlist。你只是反向訂購。請嘗試以下操作:

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

@Kane在列表解析中,就像在普通嵌套循環中一樣,您首先指定了外部循環。 – MaxPowers