映射数字

时间:2010-12-29 06:52:28

标签: python

我知道这是一个无聊的问题,我无法弄清楚>。< 我有-1000 to 1000的号码,我需要将其映射到数字0 to 200。 我认为它与map()函数有关,但我不确定。

由于

2 个答案:

答案 0 :(得分:2)

“0将是100,-500,将是50和500将是150”

然后尝试以下功能:

def mapNumber(a):
    return int(a + 1000) / 10

这样:

mapNumber(-1000)
> 0

mapNumber(-500)
> 50

mapNumber(0)
> 100

mapNumber(500)
> 150

mapNumber(1000)
> 200

这会将整数映射为整数。而且由于你的目标范围小了10倍,它会将十个不同的数字映射到相同的范围。

如果您想获得浮点数,请尝试以下方法:

def mapNumber(a):
    return (a + 1000.) / 10.

答案 1 :(得分:0)

由于输入范围[-1000,1000]远大于[0,200]的输出范围,因此许多数字将最终映射到[0,200]中的相同值。最简单的方法是取输入数字mod 201的模数。这将总是给你一个[0,200]的数字。

如果您需要对list个数字执行此操作,则可以使用map函数,如此

inlist=[-1000,9,999]
outlist=map(lambda x:x%201, inlist)
print outlist

Python中通常首选使用列表推导。

inlist=[-1000,9,999]
outlist=[x%201 for x in inlist]
print outlist