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而言)
def func_a(a, b):
return (a[0] + b[0], a[1] + b[1])
和
def func_b(p, q):
return (q[0] - p[0], q[1] - p[1]), poly_1, poly_2)
但是所有这些映射都让我感到困惑。
答案 0 :(得分:2)
map只是将函数应用于一个或多个数组中的每个元素
让我们来看看:
Items = [{"id": "10", "name": "milk"},{"id":"7", "name": "banana"},{"id":"47", "name": "cheese"},{"id":"6", "name":"carrot"}]
Fridge = [{"id":"19", "name": "cheese"},{"id": "10", "name": "milk"},{"id":"43","name": "egg"}, {"id":"6", "name":"not a carrot"}]
result = Fridge.filter(item => Items.map(f => f.id).includes(item.id));
console.log(result);
它是一个带有3个参数的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)])
函数:
map
可翻译为 lambda a, b: (a[0] + b[0], a[1] + b[1])
您将在下两个列表中应用
第一个列表poly_1
第二个列表def foo(a,b) : return (a[0] + b[0], a[1] + b[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)]
“x”取自从time * x[0], time * x[1]
让我们翻译一下:
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])
答案 1 :(得分: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)
做同样的工作。更快的方式