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

Python filter函数的使用方法及示例

发布时间:2023-06-12 09:23:15

Python中的内置函数filter()可以用于对序列进行筛选操作,批量过滤掉不符合条件的元素,返回一个新的可迭代对象(迭代器)。

filter()的语法结构如下:

filter(function, iterable)

其中,function为一个函数,表示用于判断当前元素是否包含在返回可迭代对象中的条件;而iterable则是一个可迭代对象,即任何可以使用for循环进行遍历的对象。

filter()的工作原理如下:

对于可迭代对象iterable中的每个元素,都将其作为输入参数传递给函数function进行判断。如果函数返回值为True,则该元素将被保留;如果函数返回值为False,则该元素被过滤掉,即不会出现在最终返回的可迭代对象中。

下面通过一些示例来更好地理解filter()的使用方法:

1.过滤奇数

实现要求:使用filter()函数过滤掉一个列表中的所有奇数。

代码如下:

# 定义一个列表

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

# 定义一个函数,判断当前元素是否为奇数

def is_odd(n):

    return n % 2 == 1

# 调用filter()函数进行过滤操作

new_lst = list(filter(is_odd, lst))

# 输出结果

print(new_lst)

输出结果:

[1, 3, 5, 7, 9]

2.过滤空字符串

实现要求:使用filter()函数过滤掉一个列表中的所有空字符串。

代码如下:

# 定义一个列表

lst = ["", "hello", "", "world", "", ""]

# 定义一个函数,判断当前元素是否为空字符串

def is_empty(s):

    return len(s) != 0

# 调用filter()函数进行过滤操作

new_lst = list(filter(is_empty, lst))

# 输出结果

print(new_lst)

输出结果:

['hello', 'world']

3.过滤负数

实现要求:使用filter()函数过滤掉一个列表中的所有负数。

代码如下:

# 定义一个列表

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

# 定义一个函数,判断当前元素是否为负数

def is_negative(n):

    return n < 0

# 调用filter()函数进行过滤操作

new_lst = list(filter(is_negative, lst))

# 输出结果

print(new_lst)

输出结果:

[-1, -3, -5, -7, -9]

4.过滤偶数

实现要求:使用filter()函数过滤掉一个元组中的所有偶数。

代码如下:

# 定义一个元组

tuple1 = (1, 2, 3, 4, 5, 6, 7, 8, 9, 10)

# 定义一个函数,判断当前元素是否为偶数

def is_even(n):

    return n % 2 == 0

# 调用filter()函数进行过滤操作

new_tuple = tuple(filter(is_even, tuple1))

# 输出结果

print(new_tuple)

输出结果:

(2, 4, 6, 8, 10)

总结:

如上所述,Python的filter()函数可以对序列进行筛选操作,从而批量过滤掉不符合条件的元素,返回一个新的可迭代对象。filter()函数使用方便,简明明了,而且还可以与其他函数或语句结合使用,非常灵活。掌握该函数的使用方法,有助于提高编程效率,而且代码可读性也会更好。