Я пытаюсь удалить стоп-слова (из nltk) из моего набора данных, но не уверен, почему однострочный запрос не работает:

filtered_words = [word if word not in stop_words for word in words]

Вот что мне нужно сделать:

filtered_words = []
for word in words:
    if word not in stop_words:
        filtered_words.append(word)
2
Aditya Landge 3 Июл 2019 в 00:49

3 ответа

Лучший ответ

If должен быть в конце понимания списка:

filtered_words = [word for word in words if word not in stop_words]

См. https://www.pythonforbeginners.com/basics/list-comprehensions- в - питон

4
AlessioM 2 Июл 2019 в 21:53

Синтаксис обратный. [appending_word для слова в start_words, если слово не в stop_words]


starting_words = ["hi", "joshing", "afflate", "damage"]
stop_words = ["afflate", "K", "books"]
filtered_words = []
'''for word in starting_words:
    if word not in stop_words:
        filtered_words.append(word)
==

filtered_words = [word for word in starting_words if word not in stop_words]'''
0
LifeLifeScienceLife 2 Июл 2019 в 22:05

Синтаксис вы хотите это:

x = [x for x in range(200) if x%3 == 0 ]

Поставить условие позади

Синтаксис, который у вас есть, требует еще как:

x = [x if x%3 == 0  else None for x in range(200)  ]

И это приводит к ошибке:

x = [x if x%3 == 0  for x in range(200)  ]
2
user8426627 2 Июл 2019 в 21:53