Python中range()函数如何实现步长按数值倍数递增
问题解答
Python内置的range()函数仅支持生成固定步长的等差整数序列,没有直接提供倍数递增步长的能力,无法直接复现C++示例中控制变量每次乘以固定值的循环逻辑。要实现等价效果,可以参考以下两种常用写法:
写法1:while循环直写(逻辑最贴合C原代码)
内层循环用while实现,手动维护控制变量的倍数更新规则,和C代码执行逻辑完全一致:n = 1000 # 可根据需求替换n的实际取值 for i in range(1, n): j = i while j <= n: # 此处编写循环内业务代码 j *= 7写法2:自定义等比序列生成器(调用体验接近range)
如果想要和for + range类似的简洁调用形式,可以自定义一个生成等比序列的生成器函数,复用性更强:def range_by_multi(start, stop, multiplier): current = start while current <= stop: yield current current *= multiplier # 调用示例,和原C++代码逻辑等价 n = 1000 for i in range(1, n): for j in range_by_multi(i, n, 7): # 此处编写循环内业务代码 pass
注意:不要尝试通过给
range()传入动态计算的步长实现倍数递增,range()在初始化时就会固定步长值,迭代过程中不会动态更新,无法实现等比增长的效果。
内容的提问来源于stack exchange,提问作者Bishwanath
相关产品推荐
相关产品推荐

