我试图将下面的例子放到NLP和Python的List Comprehension中,第3章中的问题10.我尝试了各种组合来试图让这种理解起作用。我想在该单词长度旁边的'sent'中显示单词。
import nltk
sent = sent = ['The', 'dog', 'gave', 'John', 'the', 'newspaper']
result = []
[word_len=(word, len(word)), result.append(word_len) for word in sent]
File "<stdin>", line 1
[word_len = (word, len(word)), result.append(word_len) for word in sent]
^
SyntaxError:语法无效
或[word_len =(word,len(word))result.append(word_len)for word in sent]
答案 0 :(得分:1)
您无法在列表理解中进行分配。您也不应该将其用于副作用(例如您的result.append(word_len)
。
要么在这里不使用列表理解。
sent = ['The', 'dog', 'gave', 'John', 'the', 'newspaper']
result = []
some_list = []
for word in sent:
result.append(len(word))
some_list.append((word, len(word))
或者,如果你所做的只是填充结果,只需直接使列表理解。
result = [len(word) for word in sent]
扩大&#34;副作用&#34;警告,你可以这样做:
result = []
[result.append(len(word)) for word in sent]
这会根据您的需要填充result
,但形式不好。它会在内存中创建一个None
列表(因为list.append
总是返回None
)并不是真的需要存在。
答案 1 :(得分:0)
我想你只是想:
[(word, len(word)) for word in sent]
你的问题与nltk无关,只是纯粹的列表理解。