Python filter()接收或舍弃数据

  • Post category:Python

filter() 是 Python 标准库内置的一个函数,它经常被用来进行过滤操作,可以根据指定的条件选择性地保留或者丢掉一个序列中的元素。该函数的完整语法为:

filter(function, iterable)

其中 function 表示过滤条件(即过滤函数),iterable 表示要过滤的序列,filter() 函数返回一个迭代器,包含了所有符合条件的元素。

下面,我们来演示一下 filter() 函数的使用方法:

筛选出列表中的偶数

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

def is_even(num):
    return num % 2 == 0

result = filter(is_even, numbers)
print(list(result)) # 输出 [2, 4, 6, 8, 10]

在这个例子中,我们定义了一个 is_even() 函数,它的作用是判断一个数是否为偶数,如果是,就返回 True,否则返回 False。通过 filter() 函数将 is_even() 应用到 numbers 序列上,得到的结果就是一个包含了所有偶数元素的迭代器,最后我们用 list() 函数将其转换为列表并输出。

筛选出字典中年龄小于 25 的人的姓名

people = [{'name': '张三', 'age': 18}, {'name': '李四', 'age': 23},
          {'name': '王五', 'age': 26}, {'name': '赵六', 'age': 28}]

def is_young(person):
    return person['age'] < 25

result = filter(is_young, people)
names = [p['name'] for p in result]
print(names) # 输出 ['张三', '李四']

在这个例子中,我们定义了一个 is_young() 函数,它的作用是判断一个字典的年龄是否小于 25 岁。通过 filter() 函数将 is_young() 应用到 people 序列中,得到的结果就是一个包含了所有年龄小于 25 岁的元素的迭代器,我们最后再用列表推导式将其中的字典元素的姓名提取出来并输出。

使用 filter() 函数可以帮助我们快速筛选出符合条件的序列中的元素,从而简化了代码的编写。