如何定义周期函数?

Bre*_*Mad 3 python lambda

如何在Python中定义周期函数,例如“锯齿”函数?

\n

f(x) = x, for \xe2\x80\x93\xcf\x80 < x < \xcf\x80和 2-pi 定期继续在 IR 上

\n

你能用一个lambda函数来做到这一点吗?

\n

Hua*_*Gao 7

您可以使用装饰器:

def periodically_continued(a, b):
    interval = b - a
    return lambda f: lambda x: f((x - a) % interval + a)

@periodically_continued(-1, 1)
def f(x):
    return x

g = periodically_continued(0, 1)(lambda x: -x)

assert f(2.5) == 0.5
assert g(2.5) == -0.5
Run Code Online (Sandbox Code Playgroud)


hir*_*ist 5

作为普通函数,您%也可以将 modulo ( ) 与 float 一起使用:

from math import pi

def f(x):
    return (x+pi) % (2*pi) - pi
Run Code Online (Sandbox Code Playgroud)

这很容易转换为 lambda 表达式:

lambda x: (x+pi) % (2*pi) - pi
Run Code Online (Sandbox Code Playgroud)