gpt4 book ai didi

python - Python中的循环范围

转载 作者:行者123 更新时间:2023-12-05 01:01:42 24 4
gpt4 key购买 nike

如何在 Python 中实现圆形范围对象

例如

令 S 是一个以 2^3 为模的圆形空间(范围 [0, 2^3))。我想生成一个像这样的范围对象:

crange(3, 7, 2 ** 3) => a range object [3, 4, 5, 6]
crange(7, 3, 2 ** 3) => a range object [7, 0, 1, 2]

我试过这个:

def crange(start, stop, modulo):
if start > stop:
return range(start, modulo) or range(stop)
else:
return range(start, stop)

但我不能输入 bigint 到 crange 例如crange(8, 2, 2 ** 160).

OverflowError: Python int too large to convert to C ssize_t

最佳答案

试试这个:

def crange(start, stop, modulo):
result = []
index = start
while index != stop:
result.append(index)
index = (index + 1) % modulo
return result

如果您知道您的列表可能太长,您可以使用生成器来生成必需序列:

def crange(start, stop, modulo):
index = start
while index != stop:
yield index
index = (index + 1) % modulo

关于python - Python中的循环范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40970290/

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