Уведомления

Группа в Telegram: @pythonsu

#1 Ноя. 17, 2015 21:05:55

Smth_unoriginal
Зарегистрирован: 2015-11-17
Сообщения: 1
Репутация: +  0  -
Профиль   Отправить e-mail  

Задать несколько параметров для проверки условия при генерации списка

Здравствуйте!

Очень мучает один вопрос.

У меня есть список из строк (=предложений). И надо выбрать из него все элементы, в которых встречаются отдельные слова.

original=['Three white sheep.', 'This is a snow white.', 'many years ago', 'one two three four.']
result=[item for item in original if 'white' in item or 'years' in item]

Соответственно в этом примере результатом является список из трех элементов


Можно ли это покрасивей написать?
Чтобы каждый раз в условии не указывать элемент ( if ‘white’ in item or ‘years’ in item), в котором должны встретиться необходимые слова (“white” и “years”).

Заранее благодарю за любую подсказку/помощь

Офлайн

#2 Ноя. 17, 2015 22:50:27

JOHN_16
От: Россия, Петропавловск-Камчатск
Зарегистрирован: 2010-03-22
Сообщения: 3292
Репутация: +  221  -
Профиль   Отправить e-mail  

Задать несколько параметров для проверки условия при генерации списка

С ходу могу такое предложить. может и не самое красивое, но по практичнее будет

original = ['Three white sheep.', 'This is a snow white.', 'many years ago', 'one two three four.']
words = ['white', 'years']
result = [item for item in original if any(map(lambda x: x in item, words))]



_________________________________________________________________________________
полезный блог о python john16blog.blogspot.com

Офлайн

#3 Ноя. 17, 2015 23:05:03

old_monty
Зарегистрирован: 2015-09-27
Сообщения: 238
Репутация: +  20  -
Профиль   Отправить e-mail  

Задать несколько параметров для проверки условия при генерации списка

Тоже предлагаю с использованием lambda для фильтрации

original =  ['Three white sheep.', 'This is a snow white.', 'many years ago', 'one two three four.']
myfilter = lambda x, s1, s2: s1 in x or s2 in x
result = [item for item in original if myfilter(item, 'white', 'years')]

Отредактировано old_monty (Ноя. 17, 2015 23:10:48)

Офлайн

#4 Ноя. 18, 2015 03:15:10

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 10016
Репутация: +  857  -
Профиль   Отправить e-mail  

Задать несколько параметров для проверки условия при генерации списка

Smth_unoriginal
У меня есть список из строк (=предложений). И надо выбрать из него все элементы, в которых встречаются отдельные слова.
re.findall() + set.intersection(), иначе будешь находить the в theater.



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version