几何级数

初始化一个包含指定范围内数字的列表,其中 startend 是包含的,两个项之间的比率为 step

  • 使用 range()math.log()math.floor() 以及列表推导式创建一个适当长度的列表,对每个元素应用步长。
  • 如果 step 等于 1,则返回错误。
  • 省略第二个参数 start,将使用默认值 1
  • 省略第三个参数 step,将使用默认值 2
from math import floor, log

def geometric_progression(end, start=1, step=2):
  return [start * step ** i for i in range(floor(log(end / start)
          / log(step)) + 1)]

geometric_progression(256) # [1, 2, 4, 8, 16, 32, 64, 128, 256]
geometric_progression(256, 3) # [3, 6, 12, 24, 48, 96, 192]
geometric_progression(256, 1, 4) # [1, 4, 16, 64, 256]