将单词长度附加到列表的列表理解语法错误

List comprehension syntax error for appending word length to a list

我试图将下面的示例放入来自 NLP 的列表理解中 Python,第 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]
              ^

语法错误:语法无效

或[word_len=(word, len(word)) result.append(word_len) for word in sent]

您不能在列表理解中进行赋值。你也不应该将它用于副作用(例如你的 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]

要扩展 "side effect" 警告,您可以这样做:

result = []

[result.append(len(word)) for word in sent]

这将根据需要填充 result,但格式不正确。它在内存中创建了一个 None 的列表(因为 list.append 总是 returns None)实际上并不需要存在。

我想你只是想要:

[(word, len(word)) for word in sent]

虽然你的问题与 nltk 无关,它只是纯粹的列表理解。