Python 很难理解
Python 很难理解,python,lambda,geometry,interpolation,Python,Lambda,Geometry,Interpolation,poly1和poly2都是包含坐标(x,y)的列表 现在这个功能已经预先实现了,我觉得很难理解: def interpolate(): # This function returns a list of tuples (x, y). return map(lambda a, b: (a[0] + b[0], a[1] + b[1]), poly_1, [(time * x[0], time * x[1]) for x in map(lambda p,
poly1
和poly2
都是包含坐标(x,y)的列表
现在这个功能已经预先实现了,我觉得很难理解:
def interpolate():
# This function returns a list of tuples (x, y).
return map(lambda a, b: (a[0] + b[0], a[1] + b[1]), poly_1,
[(time * x[0], time * x[1]) for x in map(lambda p, q: (q[0] - p[0], q[1] - p[1]), poly_1, poly_2)])
但是你能解释一下interpolate
中发生了什么吗
我能从中得到的只是(就lambdas而言)
及
但所有这些映射都让我感到困惑。map只是将一个函数应用于一个或多个数组中的每个元素 我们来看看:
return map(lambda a, b: (a[0] + b[0], a[1] + b[1]), poly_1,
[(time * x[0], time * x[1]) for x in map(lambda p, q: (q[0] - p[0], q[1] - p[1]), poly_1, poly_2)])
它是一个带有3个参数的map
函数:
lambda,b:(a[0]+b[0],a[1]+b[1])
可以翻译为def foo(a,b):返回(a[0]+b[0],a[1]+b[1])
您将在接下来的两个列表中应用它
[(时间*x[0],时间*x[1])
:time*x[0],time*x[1]
“x”取自从map返回的列表(lambda p,q:(q[0]-p[0],q[1]-p[1]),poly_1,poly_2)
让我们来翻译一下:
lambda p,q:(q[0]-p[0],q[1]-p[1])
等于def foo2(p,q):返回(q[0]-p[0],q[1]-p[1])
侧注:
def interpolate(poly_1, poly_2):
return map(lambda p, q: (p[0] + t*(q[0]-p[0]), p[1] + t*(q[1]-p[1])), poly_1, poly_2)
做同样的工作。如果你查找
map()
和lambda
你可以试着用几个较长的形式写出来def
函数,它正在对两个坐标列表进行计算。@Chris\u Rands你能这样做吗?是我还是三个贴图/循环可以简化为一个?(也很困惑)你能重新格式化吗,我觉得格式有点不对劲。
return map(lambda a, b: (a[0] + b[0], a[1] + b[1]), poly_1,
[(time * x[0], time * x[1]) for x in map(lambda p, q: (q[0] - p[0], q[1] - p[1]), poly_1, poly_2)])
def interpolate(poly_1, poly_2):
return map(lambda p, q: (p[0] + t*(q[0]-p[0]), p[1] + t*(q[1]-p[1])), poly_1, poly_2)