【python入门到精通】python函数式编程与应用详解

简介: 【python入门到精通】python函数式编程与应用详解

🚀 作者 :“大数据小禅”


🚀 粉丝福利 :加入小禅的大数据社群


🚀 欢迎小伙伴们 点赞👍、收藏⭐、留言💬


目录

python函数式编程

lambda表达式的用法及其使用场景

什么是匿名函数?

ambda表达式的基本格式

lambda表达式的使用场景

Python中的高阶函数之map

函数中带两个参数的map函数格式

Python中的高阶函数之reduce

Python中的高阶函数之 filter

Python中的高阶函数之sorted

对序列做升序排序

对序列做降序排序

对存储多个列表的列表做排序

python函数式编程

高级知识点:介绍匿名函数lambda,高阶函数map,reduce,filter,sorted的使用


lambda表达式的用法及其使用场景

什么是匿名函数?

匿名函数,顾名思义就是没有名字的函数,在程序中不用使用def进行定义,可以直接使用lambda关键字编写简单的代码逻辑。lambda本质上是一个函数对象,可以将其赋值给另一个变量,再由该变量来调用函数,也可以直接使用。**


平时,我们是先定义函数,再进行调用:


def power(x):
 return x ** 2
print(power(2))

image.png

power = lambda x : x ** 2     #前面的x表示函数的一个入参,后面的是表示对入参的一个运算
print(power(2))
输出:
4
觉得太麻烦,还可以这样调用
print((lambda x: 2 * x)(8))
输出:16

image.png

power = lambda x, n: x ** n
print(power(2, 3))

image.png

def add(l = []):
 return [x +1 for x in l]
print(add([1,2,3]))
输出:
【2,3,4】

image.png

def add(func,l = []):
 return [func(x) for x in l]
def add1(x):
 return x+1
def add2(x):
 return x+2
print(add(add1,[1,2,3]))
print(add(add2,[1,2,3]))
输出:
[2, 3, 4]
[3, 4, 5]
一个简简单单的问题,一定要用这么多代码实现?
def add(func,l = []):
return [func(x) for x in l]
print(add(lambda x:x+1,[1,2,3]))
print(add(lambda x:x+2,[1,2,3]))

Python中的高阶函数之map

*map的基本格式 map(func, iterables)


map()函数接收两个以上的参数,开头一个是函数,剩下的是序列,将传入的函数依次作用到序列

的每个元素,并把结果作为新的序列返回。也就是类似map(func,[1,2,3])

同样的,我们还是来完成这样一个功能:将list每个元素的值加1


def add(x):
 return x + 1
result = map(add, [1, 2, 3, 4])   #等于是对后面的序列都执行了add的操作
print(type(result))
print(list(result))   #不加这个list进行转化的话会输出:<map object at 0x000002168C98EDC8>
输出:
<class 'map'>
[2, 3, 4, 5]
使用lambda表达式简化操作
result = map(lambda x: x + 1, [1, 2, 3, 4])
print(type(result))
print(list(result))

image.png

print(list(map(lambda x, y: x + y, [1, 2, 3], [4, 5, 6])))
输出:
[5, 7, 9]
对于两个序列元素个数一样的,相对好理解。如果两个序列个数不一样的,会不会报错?
print(list(map(lambda x, y: x + y, [1, 2, 3], [4, 5])))
输出:
【5,7】
我们可以看到不会报错,但是结果以个数少的为准

image.pngimage.png

reduce(function, sequence, initial=None)

reduce把一个函数作用在一个序列上,这个函数必须接收两个参数,reduce函数把结果继续和序列的下一个元素做累积计算,跟递归有点类似,reduce函数会被上一个计算结果应用到本次计算中。

reduce(func, [1,2,3]) = func(func(1, 2), 3)    #意思是会先计算1跟2的结果并且运用到下一次的计算中
使用reduce函数,计算一个列表的乘积
from functools import reduce
def func(x, y):
 return x * y
print(reduce(func, [1, 2, 3, 4]))   #1*2,2*3,6*4
输出:
24
from functools import reduce
def func(x, y):
 return x * y
print(reduce(func, [1, 2, 3, 4],2))   #后面的那个2是初始值,不用写initial=2,直接写2就好,计算的结果是48,计算过程,初始值2会先跟1相乘,之后结果2跟2相乘,依次累加
结合lambda表达式,简化操作
from functools import reduce
print(reduce(lambda x, y: x * y, [1, 2, 3, 4]))

image.png

filter(function_or_None, iterable)

filter()接收一个函数和一个序列。把传入的函数依次作用于每个元素,然后根据返回值是**

True还是False决定保留还是丢弃该元素。

使用filter函数对给定序列进行操作,最后返回序列中所有偶数

print(list(filter(lambda x: x % 2 == 0, [1, 2, 3, 4, 5])))
输出:
【2,4】

image.png

sorted(iterable, key=None, reverse=False)
iterable -- 可迭代对象。
key -- 主要是用来进行比较的元素,只有一个参数,具体的函数的参数就是取自于可迭代对象中,指
定可迭代对象中的一个元素来进行排序。
reverse -- 排序规则,reverse = True 降序 , reverse = False 升序(默认)。

image.png

data = [["Python", 99], ["c", 88]]
print(sorted(data, key=lambda item: item[1]))   #item: item[1])定位到后面那个数字,根据后面那个数字进行排序,不指定的话就是按照第一个数字的大小进行排序。key=lambd这样子就表示把这个大的列表中的小的一个列表,作为item,去传入我们的匿名表达式,item不是关键字,可以更改
#输出:
[['c', 88], ['Python', 99]]

image.png

相关文章
|
24天前
|
缓存 算法 数据处理
Python入门:9.递归函数和高阶函数
在 Python 编程中,函数是核心组成部分之一。递归函数和高阶函数是 Python 中两个非常重要的特性。递归函数帮助我们以更直观的方式处理重复性问题,而高阶函数通过函数作为参数或返回值,为代码增添了极大的灵活性和优雅性。无论是实现复杂的算法还是处理数据流,这些工具都在开发者的工具箱中扮演着重要角色。本文将从概念入手,逐步带你掌握递归函数、匿名函数(lambda)以及高阶函数的核心要领和应用技巧。
Python入门:9.递归函数和高阶函数
|
24天前
|
程序员 UED Python
Python入门:3.Python的输入和输出格式化
在 Python 编程中,输入与输出是程序与用户交互的核心部分。而输出格式化更是对程序表达能力的极大增强,可以让结果以清晰、美观且易读的方式呈现给用户。本文将深入探讨 Python 的输入与输出操作,特别是如何使用格式化方法来提升代码质量和可读性。
Python入门:3.Python的输入和输出格式化
|
24天前
|
机器学习/深度学习 人工智能 算法框架/工具
Python入门:1.Python介绍
Python是一种功能强大、易于学习和运行的解释型高级语言。由**Guido van Rossum**于1991年创建,Python以其简洁、易读和十分工程化的设计而带来了庞大的用户群体和丰富的应用场景。这个语言在全球范围内都被认为是**创新和效率的重要工具**。
Python入门:1.Python介绍
|
24天前
|
开发者 Python
Python入门:8.Python中的函数
### 引言 在编写程序时,函数是一种强大的工具。它们可以将代码逻辑模块化,减少重复代码的编写,并提高程序的可读性和可维护性。无论是初学者还是资深开发者,深入理解函数的使用和设计都是编写高质量代码的基础。本文将从基础概念开始,逐步讲解 Python 中的函数及其高级特性。
Python入门:8.Python中的函数
|
24天前
|
存储 索引 Python
Python入门:6.深入解析Python中的序列
在 Python 中,**序列**是一种有序的数据结构,广泛应用于数据存储、操作和处理。序列的一个显著特点是支持通过**索引**访问数据。常见的序列类型包括字符串(`str`)、列表(`list`)和元组(`tuple`)。这些序列各有特点,既可以存储简单的字符,也可以存储复杂的对象。 为了帮助初学者掌握 Python 中的序列操作,本文将围绕**字符串**、**列表**和**元组**这三种序列类型,详细介绍其定义、常用方法和具体示例。
Python入门:6.深入解析Python中的序列
|
24天前
|
存储 SQL 索引
Python入门:7.Pythond的内置容器
Python 提供了强大的内置容器(container)类型,用于存储和操作数据。容器是 Python 数据结构的核心部分,理解它们对于写出高效、可读的代码至关重要。在这篇博客中,我们将详细介绍 Python 的五种主要内置容器:字符串(str)、列表(list)、元组(tuple)、字典(dict)和集合(set)。
Python入门:7.Pythond的内置容器
|
24天前
|
存储 Linux iOS开发
Python入门:2.注释与变量的全面解析
在学习Python编程的过程中,注释和变量是必须掌握的两个基础概念。注释帮助我们理解代码的意图,而变量则是用于存储和操作数据的核心工具。熟练掌握这两者,不仅能提高代码的可读性和维护性,还能为后续学习复杂编程概念打下坚实的基础。
Python入门:2.注释与变量的全面解析
|
11天前
|
数据采集 人工智能 数据挖掘
Python 编程基础与实战:从入门到精通
本文介绍Python编程语言,涵盖基础语法、进阶特性及实战项目。从变量、数据类型、运算符、控制结构到函数、列表、字典等基础知识,再到列表推导式、生成器、装饰器和面向对象编程等高级特性,逐步深入。同时,通过简单计算器和Web爬虫两个实战项目,帮助读者掌握Python的应用技巧。最后,提供进一步学习资源,助你在Python编程领域不断进步。
|
11天前
|
Python
Python高级编程与实战:深入理解函数式编程与元编程
本文深入介绍Python的函数式编程和元编程。函数式编程强调纯函数与不可变数据,涵盖`map`、`filter`、`reduce`及`lambda`的使用;元编程则涉及装饰器、元类和动态属性等内容。通过实战项目如日志记录器和配置管理器,帮助读者掌握这些高级技术,编写更灵活高效的Python程序。
|
25天前
|
算法 Serverless 数据处理
从集思录可转债数据探秘:Python与C++实现的移动平均算法应用
本文探讨了如何利用移动平均算法分析集思录提供的可转债数据,帮助投资者把握价格趋势。通过Python和C++两种编程语言实现简单移动平均(SMA),展示了数据处理的具体方法。Python代码借助`pandas`库轻松计算5日SMA,而C++代码则通过高效的数据处理展示了SMA的计算过程。集思录平台提供了详尽且及时的可转债数据,助力投资者结合算法与社区讨论,做出更明智的投资决策。掌握这些工具和技术,有助于在复杂多变的金融市场中挖掘更多价值。
47 12

热门文章

最新文章