4

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

最好的,梅斯

4

2 回答 2

3

你需要类似的东西:

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)]

如果计算中的所有值都是 type int,python 将创建一个int作为结果。另一方面,如果其中一个是 afloatdouble,那将是结果的类型。

这种强制既可以显式使用float(x),也可以简单地将其中一个常量表示为浮点值,例如100.0.

至于需要 2 位小数,这取决于您需要对这些值做什么。

一种方法是使用round2 位小数,例如:

ylist = [round(15.0/x*100.0, 2) for x in range(15,21)]

如果您总是需要两位小数,可能您会想要使用字符串格式,请查看@mgilson 回复。

于 2013-04-08T14:33:31.800 回答
1

也许您正在寻找类似的东西:

>>> 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']
于 2013-04-08T14:36:17.527 回答