如何使用filter()函数在Python中过滤列表
在Python中,filter()函数可以用于过滤列表,即根据给定的条件筛选出符合条件的元素。使用filter()函数可以使代码更加简洁、高效,避免使用for循环等方法,同时也方便代码的维护与修改。
filter()函数的基本语法为:filter(function, iterable),其中function为条件函数,用于决定iterable中的元素是否符合条件。返回一个filter对象,可以通过list()转换为列表。
下面是一些实例,通过这些实例,您可以更详细地了解如何使用filter()函数在Python中过滤列表:
1.筛选出偶数
偶数是指能被2整除的整数。我们可以定义一个函数,用于判断给定的数字是否是偶数,然后使用filter()函数过滤出所有偶数。
def is_even(n):
return n % 2 == 0
nums = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
even_nums = filter(is_even, nums)
print(list(even_nums))
输出结果为:[2, 4, 6, 8, 10]
在这个例子中,我们定义了一个名为is_even()的函数,接收一个数字n,如果该数字能被2整除返回True,否则返回False。然后我们使用filter()函数将nums列表中所有符合is_even()函数条件的元素过滤出来,并将结果转换为列表。
2.筛选出长度大于5的字符串
在这个例子中,我们定义一个lambda表达式,用于判断给定的字符串的长度是否大于5,然后使用filter()函数过滤出所有符合条件的字符串。
words = ['apple', 'banana', 'pear', 'pineapple', 'orange', 'watermelon'] long_words = filter(lambda x: len(x) > 5, words) print(list(long_words))
输出结果为:['banana', 'pineapple', 'orange', 'watermelon']
在这个例子中,我们使用lambda表达式,将字符串的长度大于5变为一个条件判断函数。然后我们使用filter()函数将words列表中所有符合条件判断函数的元素过滤出来,并将结果转换为列表。
3.筛选出负数
在这个例子中,我们定义一个函数,用于判断给定的数字是否为负数,然后使用filter()函数过滤出所有符合条件的数字。
def is_negative(n):
return n < 0
nums = [-5, 2, 3, -10, 8, -2]
negative_nums = filter(is_negative, nums)
print(list(negative_nums))
输出结果为:[-5, -10, -2]
在这个例子中,我们定义了一个名为is_negative()的函数,接收一个数字n,如果该数字小于0返回True,否则返回False。然后我们使用filter()函数将nums列表中所有符合is_negative()函数条件的元素过滤出来,并将结果转换为列表。
4.筛选出大于平均数的数字
在这个例子中,我们首先计算出列表nums中所有数字的平均值,然后定义lambda表达式,用于判断给定的数字是否大于平均值,然后使用filter()函数过滤出所有符合条件的数字。
def find_mean(nums):
return sum(nums) / len(nums)
nums = [10, 5, 15, 20, 25, 30]
mean = find_mean(nums)
above_mean = filter(lambda x: x > mean, nums)
print(list(above_mean))
输出结果为:[20, 25, 30]
在这个例子中,我们首先使用find_mean()函数计算出nums列表中所有数字的平均值。然后我们使用lambda表达式,将大于平均值变为一个条件判断函数。最后我们使用filter()函数将nums列表中所有符合条件判断函数的元素过滤出来,并将结果转换为列表。
使用filter()函数可以使代码更加简洁、高效,同时也可以方便代码的维护与修改。在实际开发工作中,我们将会经常用到filter()函数来过滤列表。
