使用Python的filter()函数实现列表筛选
发布时间:2023-06-18 15:46:25
Python中的filter()函数可用于从列表中筛选出符合指定条件的元素。filter()函数在每个元素上执行传递给它的函数,该函数必须返回True或False以确定该元素是否应保留。
filter()函数的语法如下:
filter(function, iterable)
其中,function是一个用于筛选元素的函数,iterable是一个可迭代对象,即列表、元组、集合等。
我们可以使用filter()函数来实现以下操作:
1. 筛选出列表中的偶数
假设我们有一个包含数字的列表,我们想从中筛选出所有的偶数。我们可以定义一个函数,该函数将一个数字作为输入并返回一个布尔值,该值取决于该数字是否为偶数。然后,我们将此函数传递给filter()函数,以便过滤掉所有的不是偶数的数字。
以下是源代码:
def is_even(n):
return n % 2 == 0
my_list = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
even_numbers = list(filter(is_even, my_list))
print(even_numbers)
输出:
[2, 4, 6, 8, 10]
2. 筛选出列表中的质数
现在假设我们有一个包含数字的列表,我们想从中筛选出所有的质数。我们可以定义一个函数,该函数将数字作为输入并返回一个布尔值,该值取决于该数字是否为质数。然后,我们将此函数传递给filter()函数,以便过滤掉所有的不是质数的数字。
以下是源代码:
def is_prime(n):
if n < 2:
return False
for i in range(2, n):
if n % i == 0:
return False
return True
my_list = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
prime_numbers = list(filter(is_prime, my_list))
print(prime_numbers)
输出:
[2, 3, 5, 7]
3. 筛选出字符串列表中的所有长度超过3的字符串
假设我们有一个字符串列表,我们想从中筛选出所有长度超过3的字符串。我们可以定义一个函数,该函数将字符串作为输入并返回一个布尔值,该值取决于该字符串的长度是否大于3。然后,我们将此函数传递给filter()函数,以便过滤掉所有长度小于或等于3的字符串。
以下是源代码:
def is_long_string(s):
return len(s) > 3
my_list = ["apple", "ball", "cat", "doll", "elephant", "frog"]
long_strings = list(filter(is_long_string, my_list))
print(long_strings)
输出:
['apple', 'doll', 'elephant', 'frog']
总结
使用Python的filter()函数可以轻松地从列表中筛选出符合条件的元素,并且非常灵活,可以根据不同的需求编写不同的筛选函数。
