python六十课——高阶函数之map

1.高阶函数:

特点:函数的形参位置必须接受一个函数对象

分类学习:

1).map(fn,lsd1,[lsd2...]):

参数一:fn --> 函数对象

参数二:lsd1 --> 序列对象(字符串、列表、range...)

功能:

将fn函数作用于lsd1中的每一个元素上,

将每次执行的结果存入到一个map对象中返回;

【注意】得到的这个map对象是一个迭代器对象

需求:lt = [‘1‘,‘2‘,‘3‘,‘4‘,‘5‘] --> [1,2,3,4,5]

map(int,lt):执行过程如下:

1).lt --> 取出第一个元素:‘1‘当做实际参数传递给int函数的形参位置 --> int(‘1‘)

将转换以后的结果:1保留到map对象的第一个元素位置

2).lt --> 取出第二个元素:‘2‘当做实际参数传递给int函数的形参位置 --> int(‘2‘)

将转换以后的结果:2保留到map对象的第二个元素位置

以此类推...

直到map函数执行完了,整个map对象才真正成型了...

高阶函数之:map(fn,lsd1,[lsd2,...])参数一:fn --> 函数对象参数二:lsd1 --> 序列对象(字符串、列表、range...)功能:将fn函数作用于lsd1中的每一个元素上,将每次执行的结果存入到一个map对象中返回;【注意】得到的这个map对象是一个迭代器对象
import collections
#需求:lt = [‘1‘,‘2‘,‘3‘,‘4‘,‘5‘] --> [1,2,3,4,5]
lt = [‘1‘,‘2‘,‘3‘,‘4‘,‘5‘]

#代码实现一:使用老技术来实现
lt1 = []
for i in lt:
    num=int(i)
    lt1.append(num)
#由于列表对象是非惰性序列,可以直接打印看到内容
# print(lt1)

#代码实现二:使用新技术解决
#步骤一:定义一个函数功能:将str数据-->int数据
def chr2Int(chr):
    # return {‘0‘:0,‘1‘:1,‘2‘:2,‘3‘:3,‘4‘:4,‘5‘:5,‘6‘:6,‘7‘:7,‘8‘:8,‘9‘:9}[chr]
    return int(chr)

mo=map(chr2Int,lt)

‘‘‘
map类型的对象在打印过程中不能直接看到其中的元素值,
所以map对象是一个惰性序列对象
‘‘‘
print(mo,type(mo))
print(isinstance(mo,collections.Iterator))

print(next(mo))
print(next(mo))

‘‘‘
将map对象(惰性的)转换为list对象(非惰性的)
‘‘‘
print(list(mo))

#代码实现三:终极版(一步到位)
print(list(map(chr2Int,lt)))
print(list(map(int,lt)))
代码:map(int,lt):执行过程如下:1).lt --> 取出第一个元素:‘1‘当做实际参数传递给int函数的形参位置 --> int(‘1‘) 将转换以后的结果:1保留到map对象的第一个元素位置2).lt --> 取出第二个元素:‘2‘当做实际参数传递给int函数的形参位置 --> int(‘2‘) 将转换以后的结果:2保留到map对象的第二个元素位置 以此类推...直到map函数执行完了,整个map对象才真正成型了... 
#需求1:lt = [1,2,3,4,5] --> 效果:[‘1‘,‘2‘,‘3‘,‘4‘,‘5‘]
#需求2:lt = [1,2,3,4,5] --> 效果:[1,4,9,16,25]
lt=[1,2,3,4,5]
#自定义函数:将int-->str
def int2Str(i):
    return str(i)
print(list(map(int2Str,lt)))
print(list(map(str,lt)))
print(list(map(lambda x:str(x),lt)))

#自定义函数:实现开方操作
def kaifang(num):
    return num**2
print(list(map(kaifang,lt)))
print(list(map(lambda x:x**2,lt)))

原文地址:https://www.cnblogs.com/hankleo/p/10503956.html

时间: 2024-10-12 11:55:51

python六十课——高阶函数之map的相关文章

python六十一课——高阶函数之reduce

2).reduce(fn,lsd): 参数一:fn --> 函数对象 参数二:lsd --> 序列对象 功能: 先将lsd中的第一和第二个元素去除传入到fn中参与运算, 运算后得到结果,再和第三个元素传入到fn中参与运算, 以此类推... [注意]: reduce函数属于functools模块中的函数,所以需要显示的先导入functools模块再使用 from functools import reduce from functools import reduce lt=[1,2,3,4] '

python 函数式编程:高阶函数,map/reduce

1 #函数式编程 2 #函数式编程一个特点就是,允许把函数本身作为参数传入另一个函数,还允许返回一个函数 3 #(一)高阶函数 4 5 f=abs 6 f 7 print(f(-20)) 8 #结果 20 9 #函数可以赋值给一个变量,即:变量可以指向函数 10 #那么函数名是什么?函数名其实就是指向函数的变量! 11 12 #下面的代码,执行后,abs已经不指向求绝对值函数而是一个整数10了. 13 #后面的abs(-10)将报错,无法执行,必须重启python才可以. 14 #abs=10

python入门16 递归函数 高阶函数

递归函数:函数内部调用自身.(要注意跳出条件,否则会死循环) 高阶函数:函数的参数包含函数 递归函数 #coding:utf-8 #/usr/bin/python """ 2018-11-17 dinghanhua 递归函数 高阶函数 """ '''递归函数,函数内部调用函数本身''' '''n!''' def f_mul(n): if type(n) != type(1) or n <= 0: #不是整数或小于0 raise Except

python内置常用高阶函数(列出了5个常用的)

原文使用的是python2,现修改为python3,全部都实际输出过,可以运行. 引用自:http://www.cnblogs.com/duyaya/p/8562898.html https://blog.csdn.net/cv_you/article/details/70880405 python内置常用高阶函数: 一.函数式编程 •函数本身可以赋值给变量,赋值后变量为函数: •允许将函数本身作为参数传入另一个函数: •允许返回一个函数. 1.map()函数 是 Python 内置的高阶函数,

Scala入门到精通——第十三节 高阶函数

本节主要内容 高阶函数简介 Scala中的常用高阶函数 SAM转换 函数柯里化 偏函数 1. 高阶函数简介 高阶函数主要有两种:一种是将一个函数当做另外一个函数的参数(即函数参数):另外一种是返回值是函数的函数.这两种在本教程的第五节 函数与闭包中已经有所涉及,这里简单地回顾一下: (1)函数参数 //函数参数,即传入另一个函数的参数是函数 //((Int)=>String)=>String scala> def convertIntToString(f:(Int)=>String

Swift高阶函数:Map,Filter,Reduce

闭包介绍 Swift一大特性便是使用简洁的头等函数/闭包语法代替了复杂的blocks语法.希望我们在Swift中不再需要像fuckingblocksyntax中所描述的语法.(译者注:头等函数-即可将函数当作参数传递给其他的函数,或从其他的函数里返回出值,并且可以将他们设定为变量,或者将他们存储在数据结构中) 闭包是自包含的blocks,它能在代码中传递和使用. 本文我们将重点介绍匿名定义的闭包(如:定义成内联的且不具名)也称匿名闭包.我们能够将其作为参数传递给其他函数/方法或者将其作为返回值.

Python进阶:函数式编程(高阶函数,map,reduce,filter,sorted,返回函数,匿名函数,偏函数)...啊啊啊

函数式编程 函数是Python内建支持的一种封装,我们通过把大段代码拆成函数,通过一层一层的函数调用,就可以把复杂任务分解成简单的任务,这种分解可以称之为面向过程的程序设计.函数就是面向过程的程序设计的基本单元. 而函数式编程(请注意多了一个"式"字)--Functional Programming,虽然也可以归结到面向过程的程序设计,但其思想更接近数学计算. 我们首先要搞明白计算机(Computer)和计算(Compute)的概念. 在计算机的层次上,CPU执行的是加减乘除的指令代码

python函数式编程之高阶函数学习

基本概念 函数式编程,是一种抽象程度很高的编程范式,纯粹的函数式编程语言编写的函数没有变量.因此,任意一个函数,只要输入确定,输出就确定的这种函数我们称之为纯函数,我们称这种函数没有副作用.而允许使用白变量的程序设计语言,由于函数内部的变量状态是不确定的,同样的输入可能有不同的输出,我们称这种函数为有副作用的. 函数式编程的一个特点就是,允许把函数本身作为参数传递给另一个函数,还允许返回一个函数! Python对函数式编程提供部分支持.由于Python允许使用变量,因此,Python不是纯函数式

python高阶函数,map,filter,reduce,ord,以及lambda表达式

为什么我突然扯出这么几个函数,是因为我今天在看流畅的python这本书的时候,里面有一部分内容看的有点懵逼. >>> symbols = '$¢£¥€¤' >>> beyond_ascii = [ord(s) for s in symbols if ord(s) > 127] >>> beyond_ascii [162, 163, 165, 8364, 164] >>> beyond_ascii = list(filter(la