Python中函数式编程函数: filter()函数

B站影视 2025-01-30 07:40 2

摘要:numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] # Using a for loop to extract even numbers even_numbers = for num in numbers: if num % 2

filter 函数从指定函数返回 True 的可迭代对象的那些元素构造一个迭代器。它非常适合根据条件筛选掉不需要的项目。

语法

filter(function, iterable)

假设有一个数字列表,并且只想提取偶数。以下是在 Python 中从列表中提取偶数的四种不同方法。

使用 For 循环

简单明了;遍历列表并检查偶数。

numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] # Using a for loop to extract even numbers even_numbers = for num in numbers: if num % 2 == 0: even_numbers.append(num) print(even_numbers) # Output: [2, 4, 6, 8, 10]

2. 无 For 循环(使用filter\和函数)

使用 filter 将功能分离到定义的函数中

numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]# Function to check if a number is even def is_even(num): return num % 2 == 0 # Using filter to extract even numbers even_numbers = list(filter(is_even, numbers)) print(even_numbers) # Output: [2, 4, 6, 8, 10]

3. 将筛选条件与 Lambda 函数结合使用

下面介绍如何使用 lambda 函数而不是单独的函数来重写代码来检查数字是否为偶数。它使用简洁的内联函数来筛选出偶数。

numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]# Using filter with a lambda function even_numbers = list(filter(lambda num: num % 2 == 0, numbers)) print(even_numbers) # Output: [2, 4, 6, 8, 10]

4. 使用 Lambda 函数进行列表推导

注意:尽管在列表推导式中像这样使用 lambda 并不常见,但它演示了如何将 lambda 的功能直接包含在推导式中。

numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]# Using list comprehension with a lambda function even_numbers = [num for num in numbers if (lambda x: x % 2 == 0)(num)] print(even_numbers) # Output: [2, 4, 6, 8, 10]

map 和 filter 都可以组合使用,以实现强大的数据处理。例如,如果你先过滤偶数,然后对它们每个求平方,你可以这样做:

numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] def is_even(num): return num % 2 == 0squared_evens = list(map(lambda x: x**2, filter(is_even, numbers))) print(squared_evens) # Output: [4, 16, 36, 64, 100]

来源:自由坦荡的湖泊AI

相关推荐