测试题19

测试题19

http://img1.sycdn.imooc.com//climg/5df84bf609b232ef06990565.jpg

老师,解析中说,先通过map函数将字符串"23443"转换为数字23443,map函数中传入的函数charToNum是怎么把字符串转换成数字的

再通过reduce函数求各元素累积和,即(((2*10+3)*10+4)*10+4))*10+3=23443,类型为int型,fn
函数传入的一个数字,怎么就按(((2*10+3)*10+4)*10+4))*10+3去计算了,要是传入的是一个列表我能理解,但是传入的是一个数字。

烦请老师指点。

正在回答

登陆购买课程后可参与讨论,去登陆

2回答

同学你好:

map(fun, lst),将传入的函数变量func作用到lst变量的每个元素中,并将结果组成新的列表返回。

lst = [a1, a2 ,a3, ......, an]

list(map(fn,lst))=[fn(a1),fn(a2),....,fn(an)]

reduce(func,lst),其中func必须有两个参数。每次func计算的结果继续和序列的下一个元素做累积计算。

例如:

lst = [a1, a2 ,a3, ......, an]

reduce(func, lst) = func(func(func(a1, a2), a3), ......, an)

reduce(fn,map(charToNum,"23443"))

可以将其拆分,先执行map(charToNum,"23443"),再执行reduce(fn,上一步骤的值)。

1、

charToNum函数的作用是返回对应传入参数的字典的值:dict[s]。

字符串是可以遍历的。因此传入的每一个字符会根据该函数方法进行返回。list(map(charToNum,"23443"))

[charToNum("2"),charToNum("3"),...,charToNum("3")]

最后得到的结果就是[2, 3, 4, 4, 3]。

2、

fn函数的作用是实现第一个参数乘以10加第二个参数:x*10+y

同学说fn函数传入的是23443这个数字是错误的理解,传入的是[2, 3, 4, 4, 3]列表每一个元素。

http://img1.sycdn.imooc.com//climg/5df874430940228806020167.jpg

使用reduce(fn,[2, 3, 4, 4, 3])--》fn(fn(fn(fn(2,3),4),4),3)

fn(2,3)=23

fn(23,4)=234

fn(234,4)=2344

fn(2344,3)=23443。

如果我解决了同学的问题,请采纳!学习愉快^_^。


好帮手乔木 2019-12-17 12:04:37

同学你好:

使用map方法得到的是map对象,该对象是可以遍历的。不是int类型(数字)。

map等高阶函数后面的参数要求不是必须是列表,只要是能遍历的对象即可。

http://img1.sycdn.imooc.com//climg/5df853070971bf2c05650461.jpg

如果我解决了同学的问题,请采纳!学习愉快^_^。


  • 提问者 xiaoyuan1 #1
    老师,我没说map函数必须是列表,两个问题: 1、解析中说,先通过map函数将字符串"23443"转换为数字23443,map函数中传入的函数charToNum是怎么把字符串转换成数字的 2、解析中说,再通过reduce函数求各元素累积和,即(((2*10+3)*10+4)*10+4))*10+3=23443,类型为int型。 fn函数传入的一个数字23443,怎么就按(((2*10+3)*10+4)*10+4))*10+3去计算了。
    2019-12-17 12:39:48
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星

相似问题

登录后可查看更多问答,登录/注册

1.Python零基础入门
  • 参与学习           人
  • 提交作业       2727    份
  • 解答问题       8160    个

想要进入Python Web、爬虫、人工智能等高薪领域,你需要掌握本阶段的Python基础知识,课程安排带你高效学习轻松入门,学完你也能听得懂Python工程师的行业梗。

了解课程
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师