Как найти строку, которая содержит заданную подстроку в списке - PullRequest
1 голос
/ 23 апреля 2020

Мне любопытно узнать самый "pythoni c" способ проверить, есть ли элемент в списке строк, который содержит данную подстроку.

Например, скажем, у нас есть список адресов электронной почты:

['email1@abc.com', 'anotheremail@grandmasSMTPserver.net', 'myboss@dontemailme.org']

, и нам нужно отправить электронное письмо на большинство писем в этом списке, но не на все. Какой самый простой (читай: большинство "pythoni c") способ проверить элемент списка, содержащий подстроку, скажем, 'dontemailme.org', и затем удалить его из списка?

Я в основном касается определения того, содержит ли элемент в списке подстроку, в идеале какой именно элемент, чтобы я мог внести соответствующие корректировки в список.

Я пришел из фона C ++, поэтому моя первоначальная мысль состоит в том, чтобы использовать for l oop с проверкой оператора if, но я часто удивляюсь гибкости Python.

Ответы [ 3 ]

1 голос
/ 23 апреля 2020

Вы можете использовать понимание списка :

emails = ['email1@abc.com', 'anotheremail@grandmasSMTPserver.net', 'myboss@dontemailme.org']
output_list = [email for email in emails if 'dontemailme.org' not in email]

print(output_list) # output: ['email1@abc.com', 'anotheremail@grandmasSMTPserver.net']

1 голос
/ 23 апреля 2020

filter в одну сторону:

filtered = filter(lambda email: 'dontemailme.org' not in email, emails)
0 голосов
/ 23 апреля 2020

Я бы использовал понимание списка:

emails = ['email1@abc.com', 'anotheremail@grandmasSMTPserver.net', 'myboss@dontemailme.org']    
filtered_emails = [email for email in emails if "dontemailme.org" not in email]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...