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

Python中如何使用filter()函数过滤序列

发布时间:2023-06-06 17:18:59

在Python中,filter()函数是一个非常有用的函数,它可以帮助我们筛选出符合一定条件的元素,生成一个新的序列。和map()函数不同的是,filter()函数不是对序列中的每一个元素都进行操作,而是只筛选出满足条件的元素。

filter()函数的语法如下:

filter(function, iterable)

其中,

- function:筛选条件,可以是一个函数或者lambda表达式。

- iterable:被筛选的可迭代对象。

filter()函数的返回值是一个迭代器,需要使用list()函数将其转化为列表才可以查看每个元素的值。

下面我们来看一个简单的例子,假如我们有一个列表,需要找出其中所有大于等于5的元素:

lst = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
new_lst = filter(lambda x: x >= 5, lst)
print(list(new_lst))

输出结果为:

[5, 6, 7, 8, 9, 10]

以上代码中,我们使用了lambda表达式来定义筛选条件,用filter()函数将lst中满足条件的元素筛选出来并生成一个新的列表。

下面是一些常见的应用场景:

1. 筛选出所有奇数或偶数元素

lst = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
even_lst = filter(lambda x: x % 2 == 0, lst)
odd_lst = filter(lambda x: x % 2 == 1, lst)

print(list(even_lst))
print(list(odd_lst))

输出结果为:

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

2. 筛选出所有长度等于5的字符串

lst = ['apple', 'banana', 'grape', 'orange', 'pear']
new_lst = filter(lambda x: len(x) == 5, lst)

print(list(new_lst))

输出结果为:

['grape', 'orange']

3. 筛选出所有大于等于18岁的人

people = [{'name': 'Alice', 'age': 17},
          {'name': 'Bob', 'age': 20},
          {'name': 'Charlie', 'age': 22},
          {'name': 'David', 'age': 15},
          {'name': 'Eva', 'age': 25}]

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

print(list(adults))

输出结果为:

[{'name': 'Bob', 'age': 20},
 {'name': 'Charlie', 'age': 22},
 {'name': 'Eva', 'age': 25}]

以上是filter()函数的基本使用方法和常见应用场景,希望能够帮助大家更好地了解和使用该函数。