Получить только те элементы в списке, которые находятся в другом списке - PullRequest
1 голос
/ 09 января 2020

У меня есть постоянный список, который выглядит следующим образом:

some_list = ["monday", "tuesday", "wednesday", "thursday", "friday", "saturday" "sunday"]

У меня есть другой список строк, которые могут принимать любую форму, но, скажем, это выглядит, например, так:

sentence_list = ["i'm going this friday", "i'm not going", "i plan to go saturday"]

То, что я хотел бы вернуть, это новый список, который содержит только строки, присутствующие в some_list

new_list = ["i'm going this friday", "i plan to go saturday"]

Я пытался сделать

 any(sentence in sentence_list for sentence in some_list)

Однако, это просто говорит мне, что предложение в списке содержит вещи в some_list Как я могу получить желаемый результат?

Ответы [ 6 ]

3 голосов
/ 09 января 2020

[sentence for sentence in sentence_list if any(key in sentence for key in some_list)]

2 голосов
/ 09 января 2020

Для каждой строки в sentence_list вам нужно проверить, есть ли здесь какие-либо слова из some_list. У вас уже есть код для тестирования, если одно предложение содержит одну из строк из some_list. Давайте express, что в качестве лямбды для проверки, является ли данное предложение действительным или нет:

valid_sentence = lambda sentence: any(word in sentence for word in some_list)

Теперь вам просто нужно сделать это для каждого предложения:

filter(valid_sentence, sentence_list)
2 голосов
/ 09 января 2020

Попробуйте это:

>>> new_list = [sentence for sentence in sentence_list if any (word in sentence for word in some_list)]
>>> new_list
["i'm going this friday", 'i plan to go saturday']
0 голосов
/ 09 января 2020

Другой способ использовать решение для понимания списка без необходимости использования функции any ():

[sentence for sentence in sentence_list if [day for day in some_list if day in sentence]]
0 голосов
/ 09 января 2020
some_list = ["monday", "tuesday", "wednesday", "thursday", "friday", "saturday", "sunday"]

sentence_list = ["i'm going this friday", "i'm not going", "i plan to go saturday"]

new_list = []

for day in some_list:
    for sentence in sentence_list:
        if day in sentence:
            new_list.append(sentence)

print(new_list)

Результат:

[«Я собираюсь в эту пятницу», «Я планирую go субботу»]

0 голосов
/ 09 января 2020
some_list = ["monday", "tuesday", "wednesday", "thursday", "friday", "saturday", "sunday"]
sentence_list = ["i'm going this friday", "i'm not going", "i plan to go saturday"]

newlist = []
for i in sentence_list:
    for j in i.split(" "):
        if j in some_list:
            newlist.append(i)
print(newlist)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...