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