2015-10-07 4 views
0

Я попытался привести приведенный ниже пример в представление списка из NLP с Python, вопрос 10 в главе 3. Я пробовал всевозможные комбинации, чтобы попытаться получить это понимание работать. Я хочу отобразить слово в '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 = (слово, длина (слово)) result.append (word_len) в слово отправлено]

+1

Задание не является частью понимания списка. Какой результат вы ожидали произвести? –

+1

Ваш синтаксис * выход * Я боюсь. Возможно, вам нужно [перечитать учебник] (https://docs.python.org/2/tutorial/datastructures.html#list-comprehensions)? –

ответ

0

Я думаю, что вы просто хотите:

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

Ваш вопрос не связан с NLTK, хотя, это просто чистый лист понимания.

+1

Я только что отредактировал свои теги ntlk и добавил список-понимание –

+0

Молодец. Благодаря! – abrunet

+0

Это именно то, что я хотел сделать с пониманием, просто напечатайте слово и его длину, спасибо за вашу помощь! – languagefreak

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] 

Для расширения на предупреждение «побочный эффект», вы могли бы сделать что-то вроде:

result = [] 

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

Это заполнит result, как вы хотели, но плохая форма. Он создает список из None s в памяти (поскольку list.append всегда возвращает None), который действительно не должен существовать.

Смежные вопросы