基础学完了,这几个python高阶函数一起来看看吧!

在 Python 编程中,高阶函数是一种强大的工具,它们能够使代码更加简洁高效。对于新手小白来说,理解这些函数的使用及其应用场景至关重要。本文将详细介绍一些常用的高阶函数,并通过简单的例子帮助大家深入理解。

1. Lambda 函数

什么是 Lambda 函数?

lambda 函数是一个小型的匿名函数(没有名称),通常用于定义简单的操作。它可以有任意数量的参数,但只能有一个表达式。

示例:求圆面积

普通函数实现

import math

# 定义计算圆面积的普通函数
def circle_area(r):
    return math.pi * r * r

r = 10
print('圆面积为:', circle_area(r))
# 输出:圆面积为:314.1592653589793

Lambda 函数实现

import math

# 使用 lambda 函数计算圆面积
circle_area_lambda = lambda r: math.pi * r * r
print('圆面积为:', circle_area_lambda(r))
# 输出:圆面积为:314.1592653589793

在列表推导式中的应用

# 生成10-100之间的随机列表
import random
random_list = [random.randint(10, 100) for _ in range(10)]
print(random_list)

根据条件生成新列表

# 每月拿出月薪的30%存入定期
salary = [8000, 8100, 8200, 8500, 7800, 7988, 8888]
save_sal = [int(x * 0.3) for x in salary]
print('每月存款数目:', save_sal)
# 输出:每月存款数目:[2400, 2430, 2460, 2550, 2340, 2396, 2666]

筛选出特定值的列表

# 找出成绩大于等于80的学生
score = [80, 81, 72, 75, 98, 79, 88]
result = [x for x in score if x >= 80]
print('成绩大于等于80的学生:', result)
# 输出:成绩大于等于80的学生:[80, 81, 98, 88]


2. filter() 函数

用途

filter() 函数用于根据指定条件过滤序列,并返回一个迭代器对象。如果要转换为列表,可以使用 list() 来进行转换。

示例:筛选奇数和偶数

提取所有奇数

def is_odd(n):
    return n % 2 == 1

odd_list = list(filter(is_odd, [8, 9, 7, 5, 7, 6, 2, 4, 3]))
print(odd_list)
# 输出:[9, 7, 5, 7, 3]

提取所有偶数

even_list = list(filter(lambda x: x % 2 == 0, [8, 9, 7, 5, 7, 6, 2, 4, 3]))
print(even_list)
# 输出:[8, 6, 2, 4]


3. map() 函数

用途

map() 函数会根据提供的函数对指定序列进行映射,返回包含每次调用返回值的新列表。

示例:求平方

使用普通函数

def square(x):
    return x * x

new_list = list(map(square, [8, 9, 7, 5, 7, 6, 2, 4, 3]))
print(new_list)
# 输出:[64, 81, 49, 25, 49, 36, 4, 16, 9]

使用 Lambda 表达式

new_list_lambda = list(map(lambda x: x * x, [8, 9, 7, 5, 7, 6, 2, 4, 3]))
print(new_list_lambda)
# 输出:[64, 81, 49, 25, 49, 36, 4, 16, 9]


4. reduce() 函数

用途

reduce() 函数用于对一个集合进行累计操作。在 Python 3 中,该函数被移到了 functools 模块中。

示例:求列表之和

from functools import reduce

# 求列表元素之和
num_list = [8, 9, 7, 5, 7, 6, 2, 4, 3]
total_sum = reduce(lambda x, y: x + y, num_list)
print(total_sum)
# 输出:51

求 0 到 100 的和

def add(x, y):
    return x + y

total_sum = reduce(add, range(1, 101))
print(total_sum)
# 输出:5050


5. sorted() 函数

用途

sorted() 函数用于对可迭代对象进行排序,返回一个新的排序列表,不会修改原始对象。

示例:升序和降序排序

grade_list = [656, 602, 610, 618, 663, 695, 622, 645, 677, 640]

# 升序排序
print(f"升序列表: {sorted(grade_list)}")
# 输出:升序列表: [602, 610, 618, 622, 640, 645, 656, 663, 677, 695]

# 降序排序
print(f"降序列表: {sorted(grade_list, reverse=True)}")
# 输出:降序列表: [695, 677, 663, 656, 645, 640, 622, 618, 610, 602]


6. zip() 函数

用途

zip() 函数将多个可迭代对象的对应元素打包成元组,返回一个 zip 对象。

示例:合并列表生成字典

name_list = ["Amo", "Paul", "Jason", "Seven"]
age_list = [18, 19, 20, 21]

# 列表合并生成列表
combined_list = list(zip(name_list, age_list))
print(combined_list)
# 输出:[('Amo', 18), ('Paul', 19), ('Jason', 20), ('Seven', 21)]

# 列表合并生成字典
combined_dict = dict(zip(name_list, age_list))
print(combined_dict)
# 输出:{'Amo': 18, 'Paul': 19, 'Jason': 20, 'Seven': 21}

矩阵转换示例

x = [1, 2, 3]
y = [4, 5, 6]
z = [7, 8, 9]

# 转换为矩阵
matrix = list(zip(x, y, z))
print(matrix)
# 输出:[(1, 4, 7), (2, 5, 8), (3, 6, 9)]


总结

通过这篇文章,我们详细介绍了几个常见的 Python 高阶函数,包括 lambda、filter()、map()、reduce()、sorted() 和 zip()。掌握这些函数可以让你的代码更简洁、易读且高效。

动手实践是学习的最佳方式,有兴趣的读者可以尝试自己动手编写代码,深入理解这些概念。如果觉得这篇文章对你有所帮助,请转发、点赞或收藏,以支持我们继续创作!

python教程31

猜你喜欢

转载自blog.csdn.net/qq_36807888/article/details/141237983