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