Я пытаюсь зацикливаться от 0 до 1, используя размеры шагов 0,01 (например). Как мне это сделать? for i in range(start, stop, step)
принимает только целые аргументы, поэтому поплавки не будут работать.Как получить больше контроля над циклами в Python?
ответ
for i in [float(j)/100 for j in range(0, 100, 1)]:
print i
+1 это гарантирует количество шагов – eumiro
Имейте в виду, что последнее напечатанное значение здесь 0.99, а не 1.0, но это только потому, что последнее значение, возвращаемое 'range', равно 99, а не 100. –
Если вы хотите 0.00 до 1.00 включительно, затем используйте: 'range (0, 101, 1)'. – Santa
Ну, вы можете сделать свою петлю от 0 до 100 с шагом размером 1, который даст вам столько же шагов. Тогда вы можете разделить i на 100 за то, что вы собираетесь с ним делать.
@James Да, мы могли бы просто создать бесконечный цикл while и поддерживать счетчики внутри цикла. Тем не менее, я пытаюсь изучить Python, и я подумал, что было бы хорошо знать. – efficiencyIsBliss
Одна проблема заключается в том, что инициализация переменной до 0.0 и добавление 0,01 к ней 100 раз не обязательно приведет к точно 1,0. Таким образом, «правильный» способ сделать это во многом зависит от того, как использовать значения. – garyjohn
@efficiencyIsBliss - первое, что вам нужно узнать, это то, что поплавки не так точны, как вы можете ожидать. Вроде. Перейдите к интерпретатору Python, введите «a = 0.4», затем введите, затем введите «a» и введите. – dotalchemy
Один из вариантов:
def drange(start, stop, step):
while start < stop:
yield start
start += step
Использование:
for i in drange(0, 1, 0.01):
print i
-1: Это может иметь проблему, если «шаг» не может быть точно представлен числом с плавающей запятой. Например, последний элемент для «drange (0,13,0.13)» составляет 12,870000000000024 (** 100 ** элементов), а последний элемент для «drange (0,11,0.11)» - 10.999999999999995 (** 101 ** элементы). – eumiro
Даже проще: 'list (drange (0,10,1))' похоже, что он ведет себя как 'range':' 0, 1, 2, 3, 4, 5, 6, 7, 8, 9] 'but' list (drange (0,1,0.1)) 'дает дополнительный элемент:' [0, 0.1, 0.2, 0.30000000000000004, 0.4, 0.5, 0.6, 0.7, 0.7999999999999999, 0.8999999999999999, 0.999999999999999999] '. – Duncan
Избегайте компаундирования с плавающей точкой ошибки при таком подходе. Количество шагов соответствует ожидаемому, а значение рассчитывается для каждого шага.
def drange2(start, stop, step):
numelements = int((stop-start)/float(step))
for i in range(numelements+1):
yield start + i*step
Usage:
for i in drange2(0, 1, 0.01):
print i
код
for i in range(0,100,0.01):
может быть достигнуто в очень простым способом, вместо того, чтобы использовать поплавок
for i in range(0,10000,1):
если вы очень обеспокоены с поплавком, то вы можете пойти с https://stackoverflow.com/a/4935466/2225357
После этого используйте цикл 'dec = float (i)/100' внутри цикла for, если вы все еще хотите десятичное значение –
Вы можете также просматривать список как:
print([i for i in [float(j)/100 for j in range(0, 100, 1)]])
если вы хотите контроль над печатью я тогда сделать что-то вроде этого:
print(['something {} something'.format(i) for i in [float(j)/100 for j in range(0, 100, 1)]])
или
list(i for i in [float(j)/100 for j in range(0, 100, 1)])
- 1. Как получить больше контроля над градиентами
- 2. Как получить больше контроля над анимацией UIImageView?
- 3. Как я могу получить больше контроля над ASP.NET?
- 4. больше контроля над C Стандартный выход
- 5. Больше контроля над стилями легенд высоких классов
- 6. Больше контроля над созданием типичных типов?
- 7. Настроить формы Symfony и получить больше контроля над процессом проверки
- 8. Больше контроля над промежуточным заказом через Railtie?
- 9. Работа над циклами while
- 10. Нужен больше контроля над текстовым полем MouseDown и KeyDown
- 11. jQuery Validate Plugin получить больше контроля
- 12. Как я могу получить больше контроля над URL-адресом в цветке магнолии?
- 13. Как я могу получить больше контроля над моей маршрутизацией контроллера API в MVC Core?
- 14. Больше контроля над тем, что распечатывается при исключении исключения
- 15. Поиск контроля над aspx
- 16. Контроля над осью в twoord
- 17. Получение контроля над аудио
- 18. В чем преимущество использования функции над циклами?
- 19. Усиление контроля над просмотром прокрутки
- 20. Получение контроля над процедурой в SQL Server
- 21. Создание увеличения контроля над отчетом
- 22. Больше проблем с циклами «делать пока», Java
- 23. Контроля над стандом :: вектор перераспределением
- 24. Akka - стратегия контроля над тестированием
- 25. Получение контроля над обстрел в post_init
- 26. Вызов контроля в blend больше не существует?
- 27. Приложение Iphone для родительского контроля над просмотром
- 28. Как начать с контроля над исходным кодом проекта в Xcode
- 29. Временные интервалы между циклами в python 3
- 30. Python: Пропустить интервал между циклами
http://stackoverflow.com/questions/477486/python-decimal- range-step-value –