Python-高阶函数&map映射

本文介绍了Python中的高阶函数概念,强调函数名称作为变量的特性,允许将其作为参数传递。通过示例展示了高阶函数减少耦合、提高扩展性的优势。详细讨论了map函数,作为Python内置的映射功能,它将集合或列表中的每个元素按特定规则处理并生成新的迭代器。在Python 3中,map函数返回的是迭代器而不是列表。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、高阶函数

1.定义:把函数作为参数使用的函数叫做高阶函数

(1)变量可以设置为赋值

a=100

b=a

(2)函数名称就是一个变量

def FunA():

  print("FunA()")

FunA()

FunB = FunA

FunB()

注意:i.函数名称是变量。ii.FunA和FunB只是名称不一样而已

iii.既然函数名称是变量,则应该可以被当做参数传入另一个函数中去。

2.高阶函数举例

#funA是一个普通函数,返回一个传入数字的100倍数字

def funA(n):

    return n * 100

#在写一个函数,把传入参数乘以300倍,利用高阶函数

def funB(n ):

    return funA(n) * 3

print(funB(9))

def funA(n):

    return n * 100

def funC(n,f):

    #假定函数是把n扩大三百倍00

    retrun f(n) * 3

print(funC(9,funA))

很显然下面的调用是更好的:

(1)减少了函数之间的耦合性,我们利用变量来达到传参的目的

(2)下面的函数扩展性更好,例如:我想要扩大500倍呢,再建立一个函数即可,而不用区修改原有的函数。

3.系统的高阶函数

(1)原意就是映射,即把集合或者列表的元素,每一个元素都按照一定规则实行操作,生成一个新的列表或者集合。

(2)map函数是系统提供的具有映射功能的函数,返回值是一个迭代对象

l1 = [i for i in range(10)]

print(l1)

l2 = []

for i in l1:

    l2.append(i*10)

print(l2)

#利用map来实现

def mulTen(n):

    return n*10

l3 = map(mulTen,l1)

print(type(l3))

print(l3)

print(list(l3))

l4 = [i for i in l3]

print(l4)

对Python感兴趣或者是正在学习的小伙伴,可以加入我们的Python学习扣qun:784758214,看看前辈们是如何学习的!从基础的python脚本到web开发、爬虫、django、数据挖掘等,零基础到项目实战的资料都有整理。送给每一位python的小伙伴!分享一些学习的方法和需要注意的小细节,教你如何实现边学习边用Python赚钱的学习方式。点击加入我们的 python学习者聚集地

前两行不解释,第三行这个map类,第四行有历史原因:python2是指在列表上操作则返回列表,但python3改了,在列表操作返回不是类,至于是什么意思,我也不清楚。第五行我们列表化打印出来了。第六行,遗留问题为啥是空列表?

### Python 中 `map` 高阶函数的用法与示例 #### 基本概念 `map()` 是一种高阶函数,用于将指定的函数应用到一个或多个可迭代对象(如列表、元组等)的每一个元素上,并返回一个新的迭代器。它的语法如下: ```python map(function, iterable[, iterable1, iterable2,...]) ``` 其中: - `function`: 要执行的操作函数。 - `iterable`: 可迭代的对象。 每次调用 `map()` 时,都会将 `function` 应用于 `iterable` 的每个元素,并返回新的结果集合[^1]。 --- #### 示例代码 ##### 示例 1:对列表中的每个元素求平方 以下是使用 `map()` 对列表 `[1, 2, 3, 4, 5]` 进行平方运算的例子: ```python numbers = [1, 2, 3, 4, 5] def square(x): return x ** 2 squared_numbers = list(map(square, numbers)) print(squared_numbers) ``` 运行结果为: ``` [1, 4, 9, 16, 25] ``` 这里,`square` 函数被映射到了 `numbers` 列表的每个元素上[^2]。 --- ##### 示例 2:使用匿名函数 (lambda) 实现相同功能 可以通过 `lambda` 表达式简化上述过程: ```python numbers = [1, 2, 3, 4, 5] squared_numbers = list(map(lambda x: x ** 2, numbers)) print(squared_numbers) ``` 同样得到结果: ``` [1, 4, 9, 16, 25] ``` 此方法利用了 `lambda` 表达式的简洁特性[^1]。 --- ##### 示例 3:多参数输入 如果提供多个可迭代对象,则它们会被一起传递给目标函数。例如,假设我们有两个列表并希望相加对应位置上的元素: ```python list1 = [10, 20, 30] list2 = [1, 2, 3] summed_list = list(map(lambda x, y: x + y, list1, list2)) print(summed_list) ``` 输出结果为: ``` [11, 22, 33] ``` 注意,在这种情况下,`map()` 将停止于最短的那个可迭代对象结束的位置[^1]。 --- ##### 示例 4:字符串转换成大写字母形式 除了数值操作外,还可以用来处理其他类型的对象,比如字符串转为全大写: ```python words = ['hello', 'world'] uppercase_words = list(map(str.upper, words)) print(uppercase_words) ``` 打印结果将是: ``` ['HELLO', 'WORLD'] ``` 此处直接指定了内置方法 `str.upper` 来完成任务。 --- ### 总结 `map()` 提供了一种优雅的方式来批量处理数据结构内的项目,无论是简单的算术变换还是复杂的逻辑判断都可以轻松实现。结合 `lambda` 或者常规定义好的函数能够极大提升编程效率代码清晰度[^2]。 相关问题
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值