将单词长度附加到列表

时间:2015-10-07 16:44:20

标签: python list-comprehension

我试图将下面的例子放到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]

2 个答案:

答案 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无关,只是纯粹的列表理解。