在Python中嵌套到动态深度

时间:2015-12-22 01:27:17

标签: python for-loop recursion nested

我遇到了一个问题,我试图解决这个问题需要嵌套与列表中的项目一样多的层次。或者确切地说,在列表中迭代。

def example(arg_list):
for i in arg_list[0]:
    for j in arg_list[1]:
        for k in arg_list[2]:
            print "{} {} {}".format(i,j,k)

只要" arg_list"上述功能就可以正常运行。是包含3个迭代的列表,例如[[1,3,4],[4,5,6],[9,3,2,1,0]]。如果列表中总有四个迭代,那么这也很容易。我需要弄清楚如何创建一个函数,为添加到" arg_list"的每个迭代添加另一个嵌套级别。参数。似乎递归可能是要走的路,但是还没有能够解决这个问题。

2 个答案:

答案 0 :(得分:6)

您正在寻找的是笛卡尔积。 Python的delete expression模块具有为您执行此操作的功能。

itertools

答案 1 :(得分:0)

您可以使用递归,例如:

def example(arg_list, res=[]):
    if arg_list == []:
        print res
        return
    for i in arg_list[0]:
        example(arg_list[1:], res+[i])