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)])
Это map
функция, которая принимает 3 аргумента:
lambda a, b: (a[0] + b[0], a[1] + b[1])
можно перевести как
def foo(a,b) : return (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)]
:
Сначала это список кортежей с двумя аргументамиtime * x[0], time * x[1]
«x» берется из списка, возвращаемого из map(lambda p, q: (q[0] - p[0], q[1] - p[1]), poly_1, poly_2)
Позволяет перевести это:
- map применяет функцию lambda к каждому элементуPoly_1 и Poly_2
lambda p, q: (q[0] - p[0], q[1] - p[1])
равно
def foo2(p,q) : return (q[0] - p[0], q[1] - p[1])