python - 更好地等效于这个疯狂的嵌套 python for 循环

标签 python recursion generator nested-loops

for a in map:
    for b in map[a]:
        for c in map[b]:
            for d in map[c]:
                for e in map[d]:
                    print a+b+c+d+e

上面的代码用于创建图中一定长度的所有路径。 map[a] 表示从 a 点可以到达的点。

如何更改它以模拟具有任意数量的循环?

这就像笛卡尔积 (itertools.product),在每次迭代中 您对下一个元素的选择仅限于 map[current_point] 中的元素。

最佳答案

map = {
    'a': ['b', 'c'],
    'b': ['c', 'd'],
    'c': ['d', 'a'],
    'd': []
}

def print_paths(map, start, length, prefix = ''):
    if length == 0:
        print prefix
    else:
        for a in map[start]:
            print_paths(map, a, length - 1, prefix + start)

for a in map.keys():
    print_paths(map, a, 5)

关于python - 更好地等效于这个疯狂的嵌套 python for 循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8906351/

相关文章:

swift - X、Y 坐标的随机数生成器

python - 生成器方法、深度复制和复制

python - 如何使用 mock.patch 模拟生成器

python - 在新的virtualenv中安装wheel软件包时,导入旧django项目模型的任何方法

python - Pyserial COM 端口问题

python 尝试除 0

c - 错误预期 ')' 尝试通过引用传递

Python csv.DictReader 内存不足

c# - 数组中等于 N 的 K 个元素之和

php - Laravel模型递归抑制无限循环