2013-04-08 36 views
1

我需要从一个范围(15,20,1)衍生的号码的列表,分别数为15 * X * 100:Python的乘法范围

X Y 
15 100 
16 93,75 
17 88,2352941176 
18 83,3333333333 
19 78,9473684211 
20 75 

结果应该是一个的阵列y有两位小数。

我用python试过,花了一段时间才发现它只能处理整数。然后我尝试了一下numpy,但是我还没有到达那里。我很努力,所以对这个问题的愚蠢感到抱歉,但在尝试了两个小时后,我决定发表一个问题。

最佳, 梅斯

+5

downvoting他的第一个问题肯定会鼓励他。 – arynaq 2013-04-08 14:28:58

+1

我对你正在寻找的输出感到困惑。我不明白这个例子与你的第一个陈述有什么关系。 – 2013-04-08 14:30:53

+0

我想,你想说'1500/x',而不是'x * 1500' – soon 2013-04-08 14:32:39

回答

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'] 
1

你需要的东西,如:

ylist = [float(x)*15*100 for x in range(15,21)] 

这将返回:

[22500.0, 24000.0, 25500.0, 27000.0, 28500.0, 30000.0] 

我不太清楚你Ÿ列意味着什么,因为你的公式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类型,蟒蛇将创建一个int为结果。另一方面,如果其中之一是floatdouble,那将是结果的类型。

这种强制可以通过使用float(x)明确地完成,或者简单地将你的一个常量表示为浮点值,如100.0

至于小数点后两位的需要,它取决于你需要做的值。

一种方法是使用round到小数点后2位,如:

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

如果你总是需要小数点后两位,可能是你想使用字符串格式化,检查@mgilson该回复。

+0

感谢您的回复。这确实是(15/x)* 100。混合起来。 ylist = [15/float(x)* 100 for x in range(15,31,1)] 解决了这个问题。 非常感谢! – mace 2013-04-08 14:40:26