假设我有这些数字
是否有一个公式可以应用于这些数字,以便我得到
基本上我想要这个数字,如果它高于1,那么它将从-1开始循环...这样我的数字将始终在[-1,1]的范围内 如果数字低于-1,它将从1开始回合。
答案 0 :(得分:4)
你可以减去1,然后减去2,然后减去1。
>>> seq = [1.7, 1.2, 0.2, -0.3, -1.2]
>>> [(x-1) % 2 - 1 for x in seq]
[-0.30000000000000004, -0.8, 0.19999999999999996, -0.30000000000000004, 0.7999999999999998]
虽然看起来由于浮点运算导致精度损失很小。如果你只关心小数点后面的一定数量的数字,你可以round
。
>>> [round((x-1) % 2 - 1, 1) for x in seq]
[-0.3, -0.8, 0.2, -0.3, 0.8]