1

我很想知道检查字符串列表中是否存在包含给定子字符串的项目的最“pythonic”方法。

例如,假设我们有一个电子邮件地址列表:

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

我们需要向此列表中的大多数电子邮件发送电子邮件,但不是全部。什么是检查包含子字符串的列表元素的最简单(阅读:最“pythonic”)方法,例如,'dontemailme.org'然后将其从列表中删除?

我主要关心的是确定列表中的一个项目是否包含子字符串,理想情况下具体是哪个项目,以便我可以对列表进行相应的调整。

我来自 C++ 背景,所以我最初的想法是使用for带有if语句的循环来检查,但我经常对 Python 的灵活性感到惊讶。

4

3 回答 3

1

您可以使用列表理解

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']

于 2020-04-23T20:23:15.970 回答
1

filter是一种方式:

filtered = filter(lambda email: 'dontemailme.org' not in email, emails)
于 2020-04-23T20:24:32.220 回答
0

我会使用列表理解:

emails = ['email1@abc.com', 'anotheremail@grandmasSMTPserver.net', 'myboss@dontemailme.org']    
filtered_emails = [email for email in emails if "dontemailme.org" not in email]
于 2020-04-23T20:23:05.583 回答