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

Python中filter函数的使用实例

发布时间:2023-05-22 13:55:12

Python中的filter是一个内置函数,它可以让用户在列表或可迭代对象中处理元素,过滤出满足条件的数据。在此处,我们将介绍如何使用filter函数,并提供一些例子。

使用filter函数

filter函数的语法格式为:

filter(function, iterable)

参数function是一个可选的参数,它指向一个函数,用于对iterable中的元素进行过滤。在Python3中,function默认为None。参数iterable是需要过滤的可迭代对象。

返回值为一个iterator(迭代器),其中包含iterable中所有满足function的元素。

示例:

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

def even_number(n):

    if n % 2 == 0:

        return True

    return False

even_nums = list(filter(even_number, nums))

print(even_nums)

在上述示例中,我们创建一个列表nums,其中包含了从1到10的整数。我们定义了一个函数even_number,用于过滤出列表中的偶数。我们然后将函数even_number和列表nums作为参数传入filter函数来获取所有偶数,最后将结果转化成一个列表,并打印它。

输出结果:

[2, 4, 6, 8, 10]

过滤器表达式

在这个示例中,我们将介绍如何使用lambda表达式,并结合filter函数过滤出一个列表中的偶数。

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

even_nums = list(filter(lambda x: x % 2 == 0, nums))

print(even_nums)

在这个示例中,我们使用lambda表达式定义了一个匿名函数,它用于返回一个元素是否是偶数的真值。我们然后将这个lambda表达式和列表nums作为参数传递给filter函数。最后,我们将结果转化为一个列表,并打印它。

输出结果:

[2, 4, 6, 8, 10]

使用filter函数从字符串列表中过滤单词

在这个示例中,我们将通过使用filter函数和lambda表达式来从字符串列表中过滤出两个字符的单词。

str_list = ['apple', 'banana', 'orange', 'pear', 'kiwi']

two_char_words = list(filter(lambda x: len(x) == 2, str_list))

print(two_char_words)

在这个示例中,我们创建了一个字符串列表str_list,然后定义一个lambda表达式来过滤出长度为2的字符串。我们然后将这个表达式和字符串列表作为参数传递给filter函数。最后,我们将结果转化为一个列表并打印它。

输出结果:

['ki']

结论

如上所述,filter函数非常有用,因为它可以快速地从列表或任何可迭代对象中过滤数据。过滤的条件可以是用户定义的函数或者lambda表达式。无论使用何种技术和方法,filter函数提供了一个快速和有效的方法,使程序员可以快速地处理大量数据。