我需要从一个范围(15,20,1)得到一个数字列表,每个数字是15 * x * 100:
X Y
15 100
16 93,75
17 88,2352941176
18 83,3333333333
19 78,9473684211
20 75
结果应该是一个带有两位小数的y数组。
我尝试使用python,我花了一段时间才发现它只会处理整数。然后我尝试了numpy,但我仍然没有到达那里。我是一个小组,很抱歉问题的愚蠢,但在尝试了两个小时后,我决定发一个问题。
最佳, 锤
答案 0 :(得分:1)
你需要这样的东西:
ylist = [float(x)*15*100 for x in range(15,21)]
?
这将返回:
[22500.0, 24000.0, 25500.0, 27000.0, 28500.0, 30000.0]
我不太确定您的Y列的含义,因为您的公式15*x*100
不会生成这些值。
如果你的意思是x*100/15
,那就是:
ylist = [15/float(x)*100 for x in range(15,21)]
甚至更简单:
ylist = [15.0/x*100.0 for x in range(15,21)]
如果计算中的所有值都是int
类型,则python将创建int
作为结果。另一方面,如果其中一个是float
或double
,那么这将是结果的类型。
这种强制可以使用float(x)
显式地完成,或者只是将一个常量表示为浮点值,例如100.0
。
至于需要2个小数位,这取决于你需要对这些值做什么。
一种方法是使用round
到2位小数,例如:
ylist = [round(15.0/x*100.0, 2) for x in range(15,21)]
如果你总是需要两个小数位,可能你会想要使用字符串格式,请查看@mgilson回复。
答案 1 :(得分:0)
也许你正在寻找类似的东西:
>>> print [float(15)/x*100 for x in range(15,21)]
[100.0, 93.75, 88.23529411764706, 83.33333333333334, 78.94736842105263, 75.0]
这不会给你2位小数的数字。为此你需要round
或字符串格式化......(我不确定你想要在事后对数字做什么,所以这里很难给出推荐)。以下是字符串格式化的示例:
>>> print ['{0:.2f}'.format(float(15)/x*100) for x in range(15,21)]
['100.00', '93.75', '88.24', '83.33', '78.95', '75.00']