我长期以来一直在努力弄清楚如何在Python中定义标尺序列的生成器函数,该函数遵循序列的第一个数字(从1开始)出现一次的规则,接下来的两个数字出现一次将出现两次,接下来的三个数字将出现三次,依此类推
所以我想要得到的是 1, 2, 2, 3, 3, 4, 4, 4, 5, 5, 5, 6, 6, 6, 7, 7, 7, 7 等等。
据我了解,执行此操作的方法是使用两个单独的计数生成器 (itertools.count(1)),然后对于一个生成器中的每个数字,从另一个生成器生成数字:
def rul():
num = itertools.count(1)
repeator = itertools.count(1)
for x in range(next(repeator)):
yield from num
但是如果我在这个函数上点击 next(),我只会返回常规的 1,2,3,4.. 序列...
对此的任何帮助将不胜感激。
最佳答案
不带 itertools 的普通旧 Python 怎么样?
def ruler():
counter = 1
n = 1
while True:
for i in range(counter):
for j in range(counter):
yield n
n += 1
counter += 1
以我的拙见,这是针对此类情况的最清晰、最直接的解决方案
关于Python 标尺序列生成器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70897759/