请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

旅行者小程序

pos=[(0,0)]
def tour(pos):
    def go(step):
        nonlocal pos
        pos.append(step)
        new_pos=reduce(lambda step,pos:(step[0]+pos[0],step[1]+pos[1]), pos)
        return new_pos
    return go

f=tour(pos)
print(f((1,2)))
print(f((2,-2)))
print(f((3,1)))
print(f((4,2)))


正在回答 回答被采纳积分+3

3回答

光荣交白卷哥 2018-08-05 21:51:00

我简化了一下你的答案,

from functools import reduce

list_x = [(1, 2), (2, 3), (3, 4)]
r = reduce(lambda x, y : (x[0] + y[0] , x[1]+y[1]), list_x)
print(r)


4 回复 有任何疑惑可以回复我~
  • Aegon_0 #1
    Thank you~
    回复 有任何疑惑可以回复我~ 2018-11-27 10:44:39
  • 这个lambda表达式没看懂,能稍微解释一下吗
    回复 有任何疑惑可以回复我~ 2019-01-16 23:06:28
  • 就是处理x,y坐标,然后进行相加啊,最后生成的表达式赋值到r上啊
    回复 有任何疑惑可以回复我~ 2019-01-18 08:24:17
这位同学很懒 2020-07-18 08:21:08
from functools import reduce
# 导入reduce模块
 
start = (0,0)
#建立(x,y)坐标,起始点为(0,0)
 
step = [(1,3),(-2,5),(10,11)]
#移动步数,横坐标朝x方向移动,纵坐标朝y方向移动
 
final = reduce(lambda now,next : (now[0] + next[0], now[1] + next[1]), step, start)
#最终坐标 = reduce(lambda 现坐标,下一步:(现坐标x+下一步x),(现坐标y+下一步y),移动步数为参数列表,起始点)
 
print(final)
#打印最终坐标


0 回复 有任何疑惑可以回复我~
榴莲不流 2018-07-07 19:27:15

在Python3里,reduce函数被放在了functools模块里,所以需要通过引入functools模块来调用reduce函数


0 回复 有任何疑惑可以回复我~
问题已解决,确定采纳
还有疑问,暂不采纳
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号