Есть ли функция диапазона() в Python для чисел с плавающей точкой, например Python: функция диапазона для десятичных чисел
a=0.6
if a in range(0,1):
a=3
Как я могу осуществить это?
Есть ли функция диапазона() в Python для чисел с плавающей точкой, например Python: функция диапазона для десятичных чисел
a=0.6
if a in range(0,1):
a=3
Как я могу осуществить это?
Подобный вопрос связан по Begueradj, но немного отличается (заметьте, поплавки не такой же, как после десятичной точки):
import decimal
def drange(start, stop, step=decimal.Decimal('1')):
while start < stop:
yield start
start += step
print(list(drange(
decimal.Decimal('1.25'),
decimal.Decimal('2.34'),
decimal.Decimal('0.1'),
)))
Выход:
[Decimal('1.25'), Decimal('1.35'), Decimal('1.45'), Decimal('1.55'),
Decimal('1.65'), Decimal('1.75'), Decimal('1.85'), Decimal('1.95'),
Decimal('2.05'), Decimal('2.15'), Decimal('2.25')]
Обратите внимание, что он не может иметь дело с нисходящими диапазонами, например 'drange (10, 0, -1)'. – GingerPlusPlus
если у вас есть NumPy установлен сделать:
>>>
импорт numpy
>>>
печати np.arange (0,1,0.1)массив ([0, 0,1, 0,2, 0,3, 0,4, 0,5, 0,6, 0,7, 0,8, 0,9])
, если у вас нет установленного Numpy, обязательно получите его.
Если я правильно читать, вы хотите, чтобы проверить, является ли число между двумя другими числами, так что используйте:
a = 0.6
if 0 <= a < 1: # change to `<= 1` to be inclusive
a = 3
Вам не нужно, чтобы создать диапазон и сделать тестирование членства - если не вами имеют дискретный набор значений, который должен совпадать с вашим a
- встроенный range
в Python 3.x может выполнять эффективный поиск для int
, так как он может оптимизировать тестирование членства. Если у вас есть большое количество дискретных значений в большом диапазоне, тогда вам было бы лучше делать это математически в любом случае.
Если вы хотите, чтобы проверить, является ли это между двумя числами, лучше использовать:
0 <=a<=1
В противном случае, если вам нужен список сказать 0 до 1 в 0,1 скачках вы можете использовать этот код для его создания:
lst = map(lambda x: x/10.0, range(11))
Почему бы просто не использовать 'if 0 <= a <1: a = 3'? –
Возможный дубликат: http://stackoverflow.com/questions/477486/python-decimal-range-step-value –