首页 > 解决方案 > 创建两个不同序列的单个“排序”生成器的 Pythonic 方法

问题描述

我想创建将输出两个序列合并为一个的生成器。这种生成器的输出必须进行排序(每个新生成的数字都大于前一个)。

这是我的解决方案,但我想知道是否有更多的pythonic方式来做到这一点。

(解决方案必须是生成器,而不是列表。)

def generator_two_ordered_sequences(maxnumber, increment1, increment2):
    i = 1
    while i < maxnumber:
        i += 1
        if i % increment1 == 0 or i % increment2 == 0:
            yield i

示例用法。数字 5 和数字 17 到 60 的顺序:

print(list(generator_two_ordered_sequences(60,5,17)))
[5, 10, 15, 17, 20, 25, 30, 34, 35, 40, 45, 50, 51, 55, 60]

标签: pythonpython-3.xgenerator

解决方案


我想说在这里使用 for 循环更符合 Python 风格。所以就:

def gen(maxnumber, increment1, increment2):
    for i in range(1, maxnumber):
        if i % increment1 == 0 or i % increment2 == 0:
            yield i

推荐阅读