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

如何使用Python内置函数filter()筛选列表?

发布时间:2023-06-30 19:00:24

Python内置函数filter()可以用于根据给定的函数和可迭代对象筛选出满足条件的元素,返回一个由这些元素组成的可迭代对象。

filter()函数的基本语法如下:

filter(function, iterable)

其中,function是一个函数,用于判断可迭代对象中的元素是否满足条件,iterable是一个可迭代对象,可以是列表、元组、字典、字符串等。

下面将介绍如何使用filter()函数筛选列表:

1. 筛选出所有奇数

假设我们有一个列表numbers,我们想要筛选出其中所有的奇数。首先定义一个函数is_odd(x),接受一个参数x,返回x是否为奇数。然后使用filter()函数进行筛选。

def is_odd(x):
    return x % 2 == 1

numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
result = filter(is_odd, numbers)
print(list(result))

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

2. 筛选出所有大于5的数字

假设我们有一个列表numbers,我们想要筛选出其中所有大于5的数字。可以使用lambda表达式定义一个匿名函数,然后将此函数作为参数传递给filter()函数。

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

输出结果为:[6, 7, 8, 9, 10]

3. 筛选出长度大于等于5的字符串

假设我们有一个字符串列表strings,我们想要筛选出其中长度大于等于5的字符串。可以使用lambda表达式定义判断条件,然后将此函数作为参数传递给filter()函数。

strings = ["hello", "world", "python", "filter", "function"]
result = filter(lambda x: len(x) >= 5, strings)
print(list(result))

输出结果为:['hello', 'world', 'python', 'filter', 'function']

4. 筛选出所有非空元素

假设我们有一个列表mixed,其中包含数字和字符串。我们想要筛选出其中所有非空元素。可以使用bool()函数作为判断条件,因为空字符串、空列表、空字典等在bool()函数中会被认为是False,而非空元素会被认为是True。

mixed = [1, "", "hello", [], {}, None, "world"]
result = filter(bool, mixed)
print(list(result))

输出结果为:[1, 'hello', 'world']

通过上述例子,我们可以看出使用filter()函数筛选列表的基本方法。首先要定义好判断函数,然后使用filter()函数将判断函数作为参数传递进去,最后将结果转换成列表进行输出。

需要注意的是,filter()函数返回的是一个可迭代对象,如果需要输出列表,则需要使用list()函数进行转换。