Pythonfilter()函数过滤不符合条件的元素
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()函数将其转换成列表,以便进行后续的处理。
