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

Pythonfilter()函数过滤不符合条件的元素

发布时间:2023-06-25 07:25:04

Python中的filter()函数是一个内置函数,可以用于过滤序列中不符合条件的元素,返回一个由满足条件的元素组成的新序列。使用filter()函数可以将一个序列中的元素按照某些条件筛选出来,非常方便实用。

filter()函数的语法格式如下:

filter(function, iterable)

其中,function表示处理每个元素时要执行的函数,iterable表示要过滤的序列。

这个function函数接受一个参数,它是iterable序列的每个元素,如果function函数返回一个True值,则该元素将保留到返回的新序列中,否则被过滤掉。

可以使用filter()函数过滤任何可迭代的对象,包括列表、元组、字典和字符串等。下面演示一些使用filter()函数的实例。

实例1:过滤出一个列表中的偶数元素

我们可以定义一个判断函数is_even(num),判断一个数字num是否为偶数,然后使用filter()函数过滤出列表中所有的偶数元素。

代码如下:

#定义一个判断函数
def is_even(num):
    return num % 2 == 0

#原始列表
my_list = [1, 2, 3, 4, 5, 6, 7, 8, 9]

#使用filter()函数过滤出偶数元素
new_list = list(filter(is_even, my_list))

print("原始列表:", my_list)
print("过滤后列表:", new_list)

输出结果为:

原始列表: [1, 2, 3, 4, 5, 6, 7, 8, 9]
过滤后列表: [2, 4, 6, 8]

实例2:过滤出一个字符串中的大写字母

我们可以定义一个判断函数is_upper(char),判断一个字符char是否为大写字母,然后使用filter()函数过滤出字符串中所有的大写字母。

代码如下:

#定义一个判断函数
def is_upper(char):
    return char.isupper()

#原始字符串
my_string = "Hello World!"

#使用filter()函数过滤出大写字母
new_string = ''.join(list(filter(is_upper, my_string)))

print("原始字符串:", my_string)
print("过滤后字符串:", new_string)

输出结果为:

原始字符串: Hello World!
过滤后字符串: HW

实例3:过滤出一个字典中的值为偶数的键

我们可以定义一个判断函数is_even(value),判断一个键值对的值value是否为偶数,然后使用filter()函数过滤出字典中所有值为偶数的键。

代码如下:

#定义一个判断函数
def is_even(value):
    return value % 2 == 0

#原始字典
my_dict = {"apple": 1, "banana": 2, "orange": 3, "pear": 4}

#使用filter()函数过滤出值为偶数的键
new_dict = {k:v for (k,v) in my_dict.items() if is_even(v)}

print("原始字典:", my_dict)
print("过滤后字典:", new_dict)

输出结果为:

原始字典: {'apple': 1, 'banana': 2, 'orange': 3, 'pear': 4}
过滤后字典: {'banana': 2, 'pear': 4}

总结

filter()函数是一个非常有用的内置函数,它可以过滤序列中不符合条件的元素,返回一个由满足条件的元素组成的新序列。使用filter()函数可以方便地对列表、元组、字典、字符串等各种可迭代对象进行筛选。由于filter()函数返回的是一个生成器对象,通常需要使用list()函数将其转换成列表,以便进行后续的处理。