Python 函数进阶

class Python

Python 函数进阶

在学习了 Python 函数的基本定义与使用后,深入了解一些高级功能可以帮助我们写出更加简洁、高效的代码。这里将介绍匿名函数(lambda)、内置函数(如 map, filter, reduce, sorted),以及递归函数。

1. 匿名函数(lambda)

匿名函数,也称为 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

2. 内置函数

Python 提供了一些非常有用的内置函数,可以与 lambda 函数配合使用。

2.1 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]
2.2 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]
2.3 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
2.4 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)]

3. 递归函数

递归函数是指在函数内部调用函数本身。递归通常用于解决分治问题或有明显重复子问题的情况,如计算阶乘、斐波那契数列等。

示例:计算阶乘

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]

总结

通过了解和使用这些进阶函数,能够帮助你更高效地处理数据,并写出简洁易读的代码。无论是匿名函数还是递归函数,都可以在日常编程中为你提供强大的工具,从而提升代码的质量和效率。

评论区
评论列表
menu