python3 map和zip一样返回的是迭代子,而不是所有的结果,你可以通过next函数获取下一个或者外加list获取全部
成都创新互联公司成立10年来,这条路我们正越走越好,积累了技术与客户资源,形成了良好的口碑。为客户提供成都网站制作、网站设计、网站策划、网页设计、国际域名空间、网络营销、VI设计、网站改版、漏洞修补等服务。网站是否美观、功能强大、用户体验好、性价比高、打开快等等,这些对于网站建设都非常重要,成都创新互联公司通过对建站技术性的掌握、对创意设计的研究为客户提供一站式互联网解决方案,携手广大客户,共同发展进步。
1. Python有哪些高阶函数,功能分别是什么
Python有三大高阶函数,分别是 map 、 reduce 、 filter 函数。
2. map高阶函数
map函数有两个参数,第一个参数要求传递一个函数对象,第二个参数要求传递一个可迭代序列。直接看案例
运行结果:
3. reduce高阶函数
reduce高阶函数位于functools模块中,使用前需要先进行导入。reduce高阶函数可以有三个参数,第一个参数要求传递一个函数对象(必传),第二个参数要求传递一个可迭代序列(必传),第三个函数是一个初始值(不必传,可以有默认值)。直接看案例
运行结果:
4. filter高阶函数
filter高阶函数有两个参数,第一个参数是一个函数对象,第二个参数是一个可迭代序列。直接看案例
运行结果:
map()是 Python 内置的高阶函数,它接收一个函数 f 和一个 list,并通过把函数 f 依次作用在 list 的每个元素上,得到一个新的 list 并返回。
你传入的 '12345'字符串也是属于列表。每个元素就是 ['1','2','3','4','5']
所以第一个输出的无可厚非。
第二个报错其实原因就是因为你的digits里面没有'1'这个key,所以会报错。
根本不会出现'12345'这个key的。如果想出现,就把代码修改下
def char(s):
digits = {'0': 0, '12345': 1, '2': 2,'3': 3, '4': 4, '5': 5, '6': 6,'7': 7, '8': 8, '9': 9}
return digits[s]
list(map(char,['12345','2','3','4','5']))
python3里面map函数返回的是一个iterator 可以省点内存。。。而列表解析不行 不过如果不是list太大的话列表解析比较方便 顺便 python3里面已经没有reduce了
大概是因为Python的那几个lambda functions先作为built-in function出现(map、reduce、filter等),然后才有的list comprehension和set comprehension。