Python乘以范围

时间:2013-04-08 14:27:05

标签: python arrays range

我需要从一个范围(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,但我仍然没有到达那里。我是一个小组,很抱歉问题的愚蠢,但在尝试了两个小时后,我决定发一个问题。

最佳, 锤

2 个答案:

答案 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作为结果。另一方面,如果其中一个是floatdouble,那么这将是结果的类型。

这种强制可以使用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']