📜  Python - 用特定字符的字符串过滤元组(1)

📅  最后修改于: 2023-12-03 15:33:57.339000             🧑  作者: Mango

Python - 用特定字符的字符串过滤元组

有时候,我们需要从一个元组中找出包含特定字符的元素,这时就需要用到字符串过滤。Python内置的filter()方法可以帮助我们实现,它可以接受一个函数和一个序列,将序列中的每个元素依次传入函数进行判断,返回结果为True的元素组成一个新的序列输出。

下面是一个例子,我们从一个包含人名和邮件地址信息的元组中,找出包含'.com'的邮件地址:

people_info = [('Tom', 'tom123@gmail.com'), ('Mary', 'mary321@outlook.com'), ('John', 'john456@yahoo.com'), ('Lucy', 'lucy789@hotmail.com')]

email_list = list(filter(lambda x: '.com' in x[1], people_info))

print(email_list)

输出:

[('Tom', 'tom123@gmail.com'), ('Mary', 'mary321@outlook.com'), ('Lucy', 'lucy789@hotmail.com')]

在这段代码中,我们用filter()方法对people_info变量进行过滤,判断条件是以'.com'结尾的邮件地址。通过lambda表达式,我们访问了每个元素的第二个元素,也就是邮件地址,然后进行了判断。最后,filter()方法将条件成立的元素组成一个新的序列输出。我们通过list()方法将这个序列转换为列表并输出。

如果我们想进一步优化代码,让它更可读,我们可以使用列表推导式来实现相同的功能。下面是一个用列表推导式实现的例子。

people_info = [('Tom', 'tom123@gmail.com'), ('Mary', 'mary321@outlook.com'), ('John', 'john456@yahoo.com'), ('Lucy', 'lucy789@hotmail.com')]

email_list = [info for info in people_info if '.com' in info[1]]

print(email_list)

输出:

[('Tom', 'tom123@gmail.com'), ('Mary', 'mary321@outlook.com'), ('Lucy', 'lucy789@hotmail.com')]

这段代码与上面的代码功能相同,通过一个简单的列表推导式实现了字符串过滤功能。

无论是使用filter()方法还是列表推导式,我们都可以方便地处理元组、列表等序列类型的元素。只需要灵活地运用Python内置的语法和方法,我们就可以轻松地解决多种问题。