2013-04-08 3 views
1

мне нужно, чтобы получить список номеров, полученных из диапазона (15,20,1), были каждое число 15 * х * 100:Python умножить диапазон

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

Результат должен быть массивом y с двумя десятичными знаками.

Я пробовал с python, и мне потребовалось некоторое время, чтобы узнать, что он будет обрабатывать целые числа. Затем я попробовал numpy, но я до сих пор не добираюсь туда. Я - нуб, так жаль глупости вопроса, но, пробовав два часа, я решил задать вопрос.

Бест, Mace

+5

Дайвинг его первого вопроса, несомненно, будет его поощрять. – arynaq

+1

Я смущен тем, что вы ищете как выход. Я не вижу, как пример относится к вашему первому утверждению. –

+0

Я думаю, вы хотели сказать «1500/x», а не 'x * 1500' – soon

ответ

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

вам нужно что-то вроде Do:

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, питон создаст int как результат. Если, с другой стороны, один из них - это float или double, который будет типом результата.

Это принуждение может быть сделано как явно, используя 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 для x в диапазоне (15,31,1)] Решили проблему. Большое спасибо! – mace

Смежные вопросы