【发布时间】:2016-09-30 15:03:32
【问题描述】:
代码的目的是收集wordlist中的所有字符,我做了以下:
wordlist = ['cat','dog','rabbit']
[c for c in word for word in wordlist]
输出很奇怪:
['r',
'r',
'r',
'a',
'a',
'a',
'b',
'b',
'b',
'b',
'b',
'b',
'i',
'i',
'i',
't',
't',
't']
我知道我可以这样做:
[ch for ch in "".join(wordlist)]
或
[word[i] for word in wordlist for i in range(len(word))]
但是我的第一个建议似乎也正确,谁能告诉我为什么第一个不起作用?
【问题讨论】:
-
你需要
[c for word in wordlist for c in word]。它与循环形成的顺序以及它们是否嵌套有关。 -
[c for wordlist for c in word]
-
我觉得这更具可读性:
list("".join(wordlist)) -
只有在运行之前设置了
word = 'rabbit',您的代码才有效。否则,您问题中的代码会引发NameError异常。