有没有办法修改一个数字,使其介于-1和1之间?

时间:2015-10-29 17:15:12

标签: python

假设我有这些数字

  • 1.7
  • 1.2
  • 0.2
  • -0.3
  • -1.2

是否有一个公式可以应用于这些数字,以便我得到

  • -0.3
  • -0.8
  • 0.2
  • -0.3
  • 0.8

基本上我想要这个数字,如果它高于1,那么它将从-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]