В Python 2 деление целых чисел всегда будет производить целое число. (В Python 3, вы получите "реальное" деление)
Вы можете переписать код, как:
[n/2.0 for n in range(100, 200)]
или в том случае, если у вас есть 2 переменные:
[float(n)/othervar for n in range(100, 200)]
, чтобы получить ожидаемое поведение,
или добавить
from __future__ import division
в начале файла, чтобы получить поведение Python 3.
Чтобы ответить на вопрос «почему», этот вопрос является продолжением семантики деления C (хотя Python сделал выбор, чтобы всегда выставлять результат вместо округления в сторону 0, так что вы даже не получаете истинный C целочисленное деление.)
Отличный вклад с модулем '__future__'. – hanleyhansen
Да, очевидно, мне нужно использовать n/(переменная + 0.00). Это работает, но это не выглядит хорошо. – RomaValcer
@RomaValcer: отредактировал мой ответ. используйте 'float()' для любой из переменных вместо добавления '0.00', чтобы заставить его быть float. – geoffspear