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

Python中filter函数的使用方法?

发布时间:2023-06-12 10:23:01

Python中的filter函数被用来过滤序列,它可以接受一个函数和一个列表、元组或其他可迭代的对象作为参数。filter函数使用传递过来的函数对序列中的每个元素进行过滤,并返回一个新的序列,其中只包含满足指定条件的元素。

filter函数的用法如下:

filter(function, sequence)

其中,function是自定义的用于过滤序列中元素的函数;sequence是需要过滤的序列。例如,我们要过滤一个列表中所有的奇数:

# 定义一个函数来过滤奇数
def is_odd(n):
    return n % 2 != 0

# 待过滤的序列
nums = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

# 使用filter函数过滤奇数
result = filter(is_odd, nums)

# 输出满足条件的元素
print(list(result))

输出结果为: [1, 3, 5, 7, 9]

在上面的例子中,我们首先定义了一个用于过滤奇数的函数 is_odd,然后使用 filter 函数过滤 nums 列表中的所有奇数,并将结果存储在一个新的列表中。

函数 is_odd 接受一个数字 n 的参数,如果 n 不能被2整除,则返回 True,表示 n 是一个奇数。filter函数通过遍历序列nums中的每个元素,并将其传递给函数 is_odd,如果函数 is_odd 返回 True,则将该元素保留在新的序列中。

filter函数还可以接受一个 lambda 函数作为参数,lambda 函数是一种匿名函数,它可以创建一个短小的函数体,该函数体只有一个表达式,该表达式的值即为函数的返回值。例如,将上面的例子改为使用 lambda 函数过滤奇数:

# 待过滤的序列
nums = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

# 使用lambda函数过滤奇数
result = filter(lambda n: n % 2 != 0, nums)

# 输出满足条件的元素
print(list(result))

输出结果为: [1, 3, 5, 7, 9]

在上面的例子中,我们使用 lambda 函数创建了一个短小的函数体 n % 2 != 0,该函数体和 is_odd 函数实现相同的功能。

filter函数也可以用于过滤字符串、元组或其他可迭代的对象。例如,我们可以使用 filter 函数过滤一个字符串中所有的小写字母:

# 定义一个函数来过滤小写字母
def is_lower(c):
    return c.islower()

# 待过滤的字符串
s = 'Hello World!'

# 使用filter函数过滤小写字母
result = filter(is_lower, s)

# 输出满足条件的字符
print(''.join(list(result)))

输出结果为: elloorld

在上面的例子中,我们首先定义了一个用于过滤小写字母的函数 is_lower,然后使用 filter 函数过滤字符串 s 中的所有小写字母,并将结果存储在一个新的字符串中。函数 is_lower 接受一个字符 c 的参数,如果 c 是小写字母,则返回 True。

总之, Python中的filter函数是一个非常有用的工具,它可以帮助我们快速地过滤序列中的元素,简化程序的代码结构,提高代码的效率。通过合理使用filter函数,我们可以轻松地实现对序列的快速筛选。