gpt4 book ai didi

python - 获取连接范围列表的索引

转载 作者:行者123 更新时间:2023-12-02 11:18:05 26 4
gpt4 key购买 nike

我有一个范围列表,该列表中的所有范围都具有相同的 startstop ,但不一样 step .
例如:

[range(0, 10, 2), range(0, 10, 3)]

当然,列表可以包含不止 2 个范围。
连接的范围列表代表以下数字:

[0, 2, 3, 4, 6, 8, 9]

我想得到 x连接范围列表的索引。
例如,最后一个示例的 5 索引将是 8 .

问题是范围可能很大(数百万),我不想将该范围变成一个列表来获取 x指数。我需要以某种方式计算该值 x没有“打开”那个范围列表的索引

尝试了几个小时来想出一种算法来做到这一点,我发现的最佳解决方案包括使用二分搜索来做到这一点,我认为这不是理想的方法。

知道我怎样才能做到这一点吗?

最佳答案

您可以重新制作 range startend ,并打包所有 step s 到一个新列表。现在在范围内的每个数字上,您可以检查它是否匹配 any步。你可以把它变成一个生成器:

def steps_range(start, end, steps):
for i in range(start, end):
if any(i % x == 0 for x in steps):
yield i

现在您可以在该生成器上循环,直到到达相关索引。根据你的例子:

ranges = [range(0, 10, 2), range(0, 10, 3)]

start = ranges[0].start
end = ranges[0].stop
steps = [r.step for r in ranges]

target_index = 5

for i, num in enumerate(steps_range(start, end, steps)):
print(num)
if i == target_index:
break

这将打印出:
0
2
3
4
6
8

关于python - 获取连接范围列表的索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61637941/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com