在学习了 Python 函数的基本定义与使用后,深入了解一些高级功能可以帮助我们写出更加简洁、高效的代码。这里将介绍匿名函数(lambda
)、内置函数(如 map
, filter
, reduce
, sorted
),以及递归函数。
匿名函数,也称为 lambda
函数,是一种简洁的函数定义方式。lambda
函数可以在一行中定义,并且没有函数名。它特别适合定义简单的、一次性的函数。
语法:
lambda arguments: expression
示例:
# 普通函数
def add(x, y):
return x + y
# lambda 函数
add_lambda = lambda x, y: x + y
# 使用 lambda 函数
result = add_lambda(3, 5)
print(result) # 输出: 8
lambda
函数通常与一些内置函数一起使用,例如 map
, filter
, sorted
。
Python 提供了一些非常有用的内置函数,可以与 lambda
函数配合使用。
map
函数map
函数用于对可迭代对象中的每个元素应用指定的函数,并返回一个映射对象(可以通过 list()
转为列表)。
语法:
map(function, iterable)
示例:
numbers = [1, 2, 3, 4]
squared = list(map(lambda x: x ** 2, numbers))
print(squared) # 输出: [1, 4, 9, 16]
filter
函数filter
函数用于过滤可迭代对象中的元素,保留满足条件的元素。
语法:
filter(function, iterable)
示例:
numbers = [1, 2, 3, 4, 5, 6]
even_numbers = list(filter(lambda x: x % 2 == 0, numbers))
print(even_numbers) # 输出: [2, 4, 6]
reduce
函数reduce
函数用于对可迭代对象中的元素进行累积操作。reduce
函数在 functools
模块中。
语法:
from functools import reduce
reduce(function, iterable)
示例:
from functools import reduce
numbers = [1, 2, 3, 4]
product = reduce(lambda x, y: x * y, numbers)
print(product) # 输出: 24
sorted
函数sorted
函数用于对可迭代对象中的元素进行排序。lambda
函数可以用于指定自定义排序规则。
语法:
sorted(iterable, key=None, reverse=False)
示例:
students = [('Alice', 22), ('Bob', 25), ('Charlie', 20)]
# 按照年龄排序
sorted_students = sorted(students, key=lambda x: x[1])
print(sorted_students) # 输出: [('Charlie', 20), ('Alice', 22), ('Bob', 25)]
递归函数是指在函数内部调用函数本身。递归通常用于解决分治问题或有明显重复子问题的情况,如计算阶乘、斐波那契数列等。
示例:计算阶乘
def factorial(n):
if n == 0 or n == 1:
return 1
else:
return n * factorial(n - 1)
print(factorial(5)) # 输出: 120
示例:斐波那契数列
def fibonacci(n):
if n <= 1:
return n
else:
return fibonacci(n - 1) + fibonacci(n - 2)
# 输出斐波那契数列前10项
fib_sequence = [fibonacci(i) for i in range(10)]
print(fib_sequence) # 输出: [0, 1, 1, 2, 3, 5, 8, 13, 21, 34]
通过了解和使用这些进阶函数,能够帮助你更高效地处理数据,并写出简洁易读的代码。无论是匿名函数还是递归函数,都可以在日常编程中为你提供强大的工具,从而提升代码的质量和效率。