2013-04-08 82 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