“使用Python内置函数之filter():过滤不符合条件的元素”
Python中的filter()函数是一种用于过滤序列的内置函数。它接受两个参数, 个参数可以是一个函数,也可以是None;第二个参数是一个可迭代的序列(如列表、元组等)。filter()函数根据 个参数传入的条件对序列进行过滤,返回一个新的序列,其中只包含满足条件的元素。
下面我们来具体了解一下filter()函数的使用方法和示例。
首先,我们可以使用函数作为filter()的 个参数。这个函数必须是一个返回布尔值的函数,也就是说,对于序列中的每个元素,这个函数返回True表示要保留该元素,返回False表示要过滤掉该元素。
示例1:过滤出列表中的偶数
def is_even(num):
return num % 2 == 0
numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
result = filter(is_even, numbers)
even_numbers = list(result)
print(even_numbers)
输出:
[2, 4, 6, 8, 10]
在示例1中,我们定义了一个is_even()函数,该函数接受一个参数num,并判断该参数是否为偶数。然后我们创建了一个列表numbers,其中包含了一些数字。通过调用filter()函数并传入is_even函数和numbers列表作为参数,我们将过滤出其中的偶数,并将结果转换为一个新的列表。最后,我们打印出了过滤后的结果。
除了使用函数作为 个参数,我们还可以使用None作为filter()的 个参数。此时,filter()函数会过滤掉序列中所有的假值元素。假值包括False、None、空字符串、0等。
示例2:过滤出列表中的非空字符串
strings = ['', 'hello', 'world', '', 'python'] result = filter(None, strings) non_empty_strings = list(result) print(non_empty_strings)
输出:
['hello', 'world', 'python']
在示例2中,我们创建了一个包含了一些字符串的列表strings。通过调用filter()函数并将None和strings列表作为参数,我们将过滤出其中的非空字符串,并将结果转换为一个新的列表。最后,我们打印出了过滤后的结果。
需要注意的是,filter()函数返回的是一个迭代器,而不是一个列表。如果我们希望获得一个列表,可以通过list()函数将其转换为列表。
总结来说,filter()函数可以帮助我们便捷地过滤序列中不符合条件的元素。通过灵活地设置过滤条件,我们可以方便地获取到我们需要的元素。在实际开发中,filter()函数可以帮助我们简化代码,提高效率。
