关于旅行人坐标计算的问题

来源:12-5 reduce

爱吃apple的阿狸

2019-11-14

#引入函数
from functools import reduce

#初始位置
start = (0, 0)

#经过的位置
steps = [(1, 3), (2, -2), (-2, 3)]

#计算结果
r = reduce(lambda current_pos, new_step: list(map(lambda x, y: x + y, current_pos, new_step)), steps, start)

#结果坐标位置
print(r)

我想到的最优雅的方法,已知初始坐标位置,求最终坐标位置,就用的老师刚教的两个函数 map和reduce.

写回答

2回答

7七月

2019-11-15

这个不太对吧,旅行者是一步步走的,这个能一步步的走吗。

1
3
爱吃apple的阿狸
回复
7七月
哦,我懂了,我这个是已知所有走过的步数使用reduce连续计算的,弄成传参那就更简单了,像之前全局变量或者闭包那样 # 初始位置 start = (0, 0) #计算 def factory(pos): def go(step): #可以强制声明不是一个局部变量 nonlocal pos pos = list(map(lambda x, y: x + y, pos, step)) return pos return go tourist = factory(start) #结果坐标位置 print(tourist((1,0))) print(tourist((1,2))) print(tourist((-1,-1))) print(tourist((3,-1)))
2019-11-15
共3条回复

爱吃apple的阿狸

提问者

2019-11-15

弄成函数调用,我测试没问题

# 初始位置
start = (0, 0)

#计算
def factory(pos):
    def go(step):
        #可以强制声明不是一个局部变量
        nonlocal pos
        pos = list(map(lambda x, y: x + y, pos, step))
        return pos
    return go

tourist = factory(start)

#结果坐标位置
print(tourist((1,0)))
print(tourist((1,2)))
print(tourist((-1,-1)))
print(tourist((3,-1)))


0
0

Python3.8系统入门+进阶 (程序员必备第二语言)

语法精讲/配套练习+思考题/原生爬虫实战

14446 学习 · 4438 问题

查看课程