Одна строка для цикла, чтобы добавить элементы в список в Python - PullRequest
2 голосов
/ 03 июля 2019

Я пытаюсь удалить стоп-слова (из 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)

Ответы [ 3 ]

4 голосов
/ 03 июля 2019

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

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

см .: https://www.pythonforbeginners.com/basics/list-comprehensions-in-python

2 голосов
/ 03 июля 2019

синтаксис, который вы хотите:

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)  ]
0 голосов
/ 03 июля 2019

Синтаксис обратный.[добавление слова для слова в начальных словах, если слово не в словах остановок]


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]'''
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...