小编Noe*_*che的帖子

递归过程中的`yield`

假设我有一个表示某些变量范围的 Python 列表:

conditions = [['i', (1, 5)], ['j', (1, 2)]]
Run Code Online (Sandbox Code Playgroud)

这表示变量i范围从 1 到 5,在该循环变量j范围内从 1 到 2。我想要每个可能的组合的字典:

{'i': 1, 'j': 1}
{'i': 1, 'j': 2}
{'i': 2, 'j': 1}
{'i': 2, 'j': 2}
{'i': 3, 'j': 1}
{'i': 3, 'j': 2}
{'i': 4, 'j': 1}
{'i': 4, 'j': 2}
{'i': 5, 'j': 1}
{'i': 5, 'j': 2}
Run Code Online (Sandbox Code Playgroud)

原因是我想迭代它们。但是因为整个空间太大,我不想生成所有这些,存储它们然后迭代那个字典列表。我考虑过使用以下递归过程,但我需要这部分的帮助yield。它应该在哪里?如何避免嵌套生成器?

def iteration(conditions, currentCondition, valuedIndices):
    if currentCondition == len(conditions):
        yield valuedIndices
    else:
        cond = conditions[currentCondition]
        index …
Run Code Online (Sandbox Code Playgroud)

python recursion yield

8
推荐指数
1
解决办法
285
查看次数

标签 统计

python ×1

recursion ×1

yield ×1