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

Python内置函数的应用:用filter()函数筛选数据

发布时间:2023-06-26 19:37:19

Python是一门高级编程语言,内置了丰富的库和函数,可以进行多种多样的操作。其中,filter()函数是Python内置函数之一,它可以用来筛选数据。filter()函数通过传递一个函数对象(函数自身是一个对象),在指定的序列中过滤出符合条件的数据,返回一个新的序列,该序列包含了所有符合条件的数据。

在此过程中,filter()函数的参数包括两部分:第一个参数是一个函数,用来过滤数据;第二个参数是一个序列,表示待过滤的数据。例如:

import random

nums = [random.randint(1,100) for i in range(10)]
def even(num):
    if num % 2 == 0:
        return True
    else:
        return False

result = filter(even, nums)
print('原序列:', nums)
print('筛选后的序列:', list(result))

以上代码生成了一个长度为10的随机整数序列,然后定义了一个函数even,判断一个数字是否是偶数。最后,利用filter()函数过滤掉nums中的奇数,返回新的序列,经过list()函数转化为列表输出。

其中常见的用法有:

1. 利用filter()函数过滤掉空字符串:

names = ['','John','','Mary','Dave','','Chris','']
print('原序列:', names)
new_names = filter(lambda x: x != '', names)
print('筛选后的序列:', list(new_names))

输出:

原序列: ['', 'John', '', 'Mary', 'Dave', '', 'Chris', '']
筛选后的序列: ['John', 'Mary', 'Dave', 'Chris']

2. 利用filter()函数过滤掉分数低于60分的学生:

students = [{'name':'张三', 'score': 78}, {'name':'李四', 'score': 58},
            {'name':'王五', 'score': 85}, {'name':'赵六', 'score': 42}]
result = filter(lambda x: x['score'] >= 60, students)
print('筛选后的学生:', list(result))

输出:

筛选后的学生: [{'name': '张三', 'score': 78}, {'name': '王五', 'score': 85}]

3. 利用filter()函数过滤掉列表中所有小于平均值的数:

nums = [5, 7, 3, 8, 2, 9, 1]
avg = sum(nums) / len(nums)
result = filter(lambda x: x >= avg, nums)
print('平均数:', avg)
print('筛选后的序列:', list(result))

输出:

平均数: 5.428571428571429
筛选后的序列: [7, 8, 9]

总之,filter()函数能够在数据处理时发挥重要作用,通过传递一个函数对象,可以对序列中的数据进行筛选和过滤,得到满足要求的新序列。