欢迎访问宙启技术站
智能推送

Python函数:使用filter()函数对容器中的元素进行筛选操作

发布时间:2023-06-19 06:29:23

Python中的filter()函数是一个内置函数,它可以对容器中的元素进行筛选操作。它会接受一个函数和一个可迭代对象作为参数,在可迭代对象中筛选出满足特定条件的元素,并返回一个生成器对象。 

filter()函数的基本语法如下:

filter(function, iterable)

其中,function为用于筛选的函数,接受一个参数并返回一个bool值,如果为True则保留该元素,否则从结果中移除。iterable为需要筛选的可迭代对象,可以是列表、元组、字典等。

下面通过一些例子来演示使用filter()函数的不同方式:

1. 使用lambda函数,筛选出所有的偶数

lst = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

even_numbers = list(filter(lambda x: x%2 == 0, lst))

print(even_numbers) # [2, 4, 6, 8, 10]

在这个例子中,我们传入了一个lambda函数作为函数参数,这个lambda函数接受一个参数x,判断x%2是否等于0,如果为True则保留x,否则从lst中删除x。最后,我们将生成器对象转换成列表形式,得到了所有的偶数。

2. 筛选出所有的非空字符串

str_lst = ["hello", "", "world", "", "python"]

non_empty_strs = list(filter(lambda s: s != "", str_lst))

print(non_empty_strs) # ["hello", "world", "python"]

在这个例子中,我们使用了一个lambda函数来判断字符串是否为空串,如果不是,则保留该字符串。最后,我们再将生成器对象转换成列表形式,得到了所有的非空字符串。

3. 过滤出所有年龄大于18岁的人

people = [

    {"name": "Alice", "age": 20},

    {"name": "Bob", "age": 16},

    {"name": "Charlie", "age": 25},

    {"name": "David", "age": 18}

]

adults = list(filter(lambda x: x["age"] > 18, people))

print(adults) # [{"name": "Alice", "age": 20}, {"name": "Charlie", "age": 25}]

在这个例子中,我们使用了一个lambda函数来判断人的年龄是否大于18岁,如果是,则保留该人的信息。最后,我们将生成器对象转换成列表形式,得到了所有年龄大于18岁的人的信息。

总结:

从上面的例子中可以看出,使用filter()函数可以轻松地从一个可迭代对象中筛选出符合特定条件的元素,可以大大简化我们的代码。一般来说,使用lambda函数比较方便,但是如果需要复杂的判断,也可以定义一个单独的函数进行筛选。