Python圆形范围,具有中心点和来自列表的半径

2024-04-26 07:10:17 发布

您现在位置:Python中文网/ 问答频道 /正文

使用python3.X,我有一个数字列表,最大索引为2880。 我想选择一个任意索引(例如1500),并在索引周围定义一个“半径”,比如5。因此,我生成了一系列指标:1495, 1496, 1497, 1498, 1499, 1500, 1501, 1502, 1503, 1504, 1505。在

为此,我将使用以下方法:

min = 0
max = 2880
center = 1500
radius = 5
r = range(center - radius, center + radius + 1)
>> 1495, 1496, 1497, 1498, 1499, 1500, 1501, 1502, 1503, 1504, 1505

问题是,如果我把中心定义为2878呢?我不想要2873, 2874, 2875, 2876, 2877, 2878, 2879, 2880,28812882。。。在

我需要2873, 2874, 2875, 2876, 2877, 2878, 2879, 2880, 0, 1, 2

Python3中是否有一个内置函数,允许接受圆心、半径和数组来执行此操作?比如:

^{pr2}$

Tags: 方法列表定义半径range数字min中心
2条回答

您可以轻松地创建一个生成器来执行此操作。您可以像range一样使用生成器。在

def bounded_range(center, radius, highest):
    mod = highest + 1
    for i in range(center - radius, center + radius + 1):
        yield i % mod

lst = []
for i in bounded_range(1500, 5, 2880):
    lst.append(i)

print(lst)
print(list(bounded_range(2878, 5, 2880)))

输出

^{pr2}$

顺便说一句,您不应该使用minmax作为变量名,因为这样会隐藏内置的min和{}函数。在

我会用列表理解来完成这项工作。比如:

r = [ i % (max + 1) for i in range(center - radius, center + radius + 1)]

^{pr2}$

相关问题 更多 >