我得到了一些像(0,1),[1,2],...,[9,10)的區間。我想知道一個浮點值,e.g 3.75
,屬於哪個區間。我做的是做左邊界清單[0,1,...,9]
和右邊界清單[1,2,...,10]
。然後找到3.75
大於它的左邊界的第一個值,3
。然後找到3.75
小於它的右邊界的第一個值,4
。然後3.75
屬於區間[3,4]。是否有更好的如何找到3.75
屬於哪個區間?Python:我如何獲得間隔屬於的浮點值?
0
A
回答
1
只存儲一個邊界列表就足夠了。您可以使用bisect_right
找到區間的左邊界的索引,然後index + 1
是正確的邊界:
import bisect
def find(num, boundaries):
if boundaries[0] < num < boundaries[-1]:
index = bisect.bisect_right(boundaries, num)
return boundaries[index - 1], boundaries[index]
return None
b = range(11)
CASES = [3.75, 0, 10, 5, 0.1, 9.9, 11, -1, 6.7]
for n in CASES:
print('{} belongs to group {}'.format(n, find(n, b)))
輸出:
3.75 belongs to group (3, 4)
0 belongs to group None
10 belongs to group None
5 belongs to group (5, 6)
0.1 belongs to group (0, 1)
9.9 belongs to group (9, 10)
11 belongs to group None
-1 belongs to group None
6.7 belongs to group (6, 7)
0
您也可以嘗試使用地板()和小區()在Python數學庫中運行,以解決您的問題。
import math
lb = [0,1,2,3,4,5,6,7,8,9]
ub = [1,2,3,4,5,6,7,8,9,10]
inp = raw_input('Enter a number : ')
num = float(inp)
term = [[x, y] for x, y in zip(lb, ub) if int(math.floor(num)) == x and int(math.ceil(num)) == y]
if term == []:
print str(num) + ' does not belong to any specified interval'
else:
print str(num) + ' belongs to the interval ' + str(term[0])
相關問題
- 1. Python-獲得間隔的最大值
- 2. 如何使用UIPanGestureRecognizer從y值獲得0和1之間的浮點值
- 3. 如何獲得點擊屬性值?
- 4. 我如何獲得浮點變量點後的5位數字?
- 5. 如何獲得最高的浮點數?
- 6. 如何獲得Android中的字符串中的浮點值?
- 7. 在d3中,我如何獲得兩點之間的值?
- 8. 如何獲得浮動結果? (Python)
- 9. 從nsdata獲得浮點值objective-c iOS
- 10. 如何獲得特定的最後十進制浮點值
- 11. 如何從PHP中的模數獲得浮點值?
- 12. 如何獲得指針指向的浮點值?
- 13. Python scipy.interpolate.interp1d不適用於大浮點值
- 14. 如何在PostgreSQL中獲得時間戳的浮動平均值?
- 15. 如何在Python中使用步驟獲得隨機浮點數
- 16. 我如何計算python中的時間浮點微秒?
- 17. 爲什麼我的weka輸出中獲得浮點值?
- 18. 如何獲得小數點分隔符?
- 19. 如何獲得屬性值
- 20. 如何獲得屬性值
- 21. 如何在分區間隔中獲取值所屬的分區?
- 22. 如何從元素中獲得浮點值?
- 23. 如何在劃分兩個整數時獲得浮點值? (PHP)
- 24. iOS Objective-C如何獲得2個小數圓整浮點值?
- 25. 如何從數據庫中獲得浮點解析值?
- 26. 獲得屬性值屬於其他類
- 27. 如何從XMVECTOR獲取浮點值? (DirectXMath)
- 28. 我如何獲得浮動imgs填充所有空間
- 29. 浮點值變得太小
- 30. Python 2.6 - 如何從時間戳獲得點位時間