python - 创建两个不同序列的单个“排序”生成器的 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]
解决方案
我想说在这里使用 for 循环更符合 Python 风格。所以就:
def gen(maxnumber, increment1, increment2):
for i in range(1, maxnumber):
if i % increment1 == 0 or i % increment2 == 0:
yield i
推荐阅读
- mysql - 5.1 版的 MySQL 查询在 5.7 中不起作用
- mysql - 当我想创建触发器时,如何在 MySql 工作台中修复错误代码 1415?
- arrays - Flutter:如何解码多个json数据数组?
- mongodb - 错误:在服务“mongo”中使用了命名卷“mongodb_config:/data/configdb:rw”,但在卷部分未找到声明
- reactjs - 如何在 Google Pay 反应按钮中调用 ProcessPayment 功能?
- android - 如何设置服务器发送应用内通知?(不是推送通知)
- c# - 如何在 CustomTaskPanes 中添加 image.ico 文件
- wordpress - 我在 wordpress 中找不到 appreance menu 制作的菜单代码
- elasticsearch - 如何在elasticsearch中索引字段但不将其存储在_source中?
- python - 无法在 Python 中重新排列字符串