2014-11-22 78 views
1

範圍功能是否有任何蟒範圍()函數與浮點數 例如的Python:爲十進制數字

a=0.6 

if a in range(0,1): 
    a=3 

我如何實現這一點?

+1

爲什麼不只是使用'如果0 <= a <1:a = 3'? – 2014-11-22 10:54:28

+0

可能的重複:http://stackoverflow.com/questions/477486/python-decimal-range-step-value – 2014-11-22 10:57:14

回答

2

由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')] 
+0

請注意,它不能處理降序範圍,如'drange(10,0,-1)'。 – GingerPlusPlus 2014-11-22 11:09:04

0

假設你有numpy的安裝做:

>>> import 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,一定要去弄明白。

4

如果我讀正確,你想測試一個數字是其他兩個數字之間,所以使用:

a = 0.6 
if 0 <= a < 1: # change to `<= 1` to be inclusive 
    a = 3 

你並不需要生成一個範圍,辦會員測試 - 除非你有一組離散的值,您的a應該匹配 - Python 3.x中的內置range可以對int進行高效查找,因爲它可以優化成員資格測試。如果你在很大範圍內有大量的離散值,那麼無論如何你都會以數學方式進行。

-1

如果您想檢查是否在兩個數字之間,最好使用:
0 <=a<=1
否則,如果你需要的清單說,0至1 0.1的跳躍,你可以使用此代碼生成它:
lst = map(lambda x: x/10.0, range(11))

相關問題