python - 从较大的给定边界创建一组连续的非重叠边界
问题描述
如果一个边界被给定为(40,260)并且它需要被分成4个相等的较小的连续非重叠边界(即,(40,95),(96,150),(151,205),(206,260))我尝试了以下方法.
def range_non_overlapping(range_left, range_right, range_per_cut, cut_num)
ranges=[]
for i in range(cut_num):
ranges.append(range_left + i * range_per_cut)
ranges.append(min(range_right, (range_left + (i + 1) * range_per_cut)))
return ranges
但是以下代码会导致边界 [40,95,95,150,150,205,205,260] 上的重叠区域(列表开头的对是较小的边界)。我需要创建 [40,95,96,150,151,205,206,260]
解决方案
如果端点是包容性的,那么你不能得到 4 个相等的区域,因为大小 (221) 不是 4 的倍数。我认为你想要 (40,94)、(95,149)、(150,204)、( 205,260)),您可以通过以下方式进行:
def divide( left, right, cuts ):
delta = (right-left+1) // cuts
out = []
for i in range(cuts):
out.append( left )
left += delta
out.append( left - 1 )
out[-1] = right
return out
print( divide( 40, 260, 4 ) )
这些区域是 55、55、55 和 56。
推荐阅读
- kubernetes - 我们如何使用 configmap 中指定的数据来请求 pod 中的内存?
- html - HTML中的同一张图片是否可以根据鼠标是否在其上而有不同的来源?
- high-availability - 在高可用性模式下切换节点
- mysql - 错误 2014 MySQL。命令不同步,当我创建我的第一个触发器时
- wordpress - 自定义字段,WP Bakery Grid Builder
- reactjs - 如何为物料表中的字段添加自定义 onRowClick 功能?
- php - 在 JsonResponse 消息中显示字符 "
- r - FB-Prophet 在 R 中获得变化点:m$changepoints.t 代表什么?
- c++ - 来自 WinHttpQueryHeaders 的 ERROR_WINHTTP_INCORRECT_HANDLE_STATE
- kubernetes - 尽管我的用户/角色 ARN 不是 aws-auth CM 的一部分,但我如何能够访问 EKS 集群?