递归求数组全排列

需求如下,一个大列表里包含若干个小列表, 但事先不知道大列表内的小列表个数,求这个大列表的笛卡尔积

示例如下:

原始大列表: List = [['a', 'b'], ['c'], ['d', 'e']]

输出: ['a,c,d', 'a,c,e', 'b,c,d', 'b,c,e']

tr_l = []


def df(str1, num, l):
    try:
        l_d = l[num]  #有没有到最后一个小列表,没有就继续向下走,到了就说明这一个组合完成
        for i in l_d:
            str_t = str1 + i + ','
            df(str_t, num + 1, l)
    except:
        str_l.append(str1[0: -1])
        return


if __name__ == '__main__':
    td = [['a', 'b'], ['c'], ['d', 'e']]
    num = 0
    for i in td[0]:
        str1 = i + ','
        df(str1, num + 1, td)

    print(str_l)

猜你喜欢

转载自blog.csdn.net/wangziyang777/article/details/127792196
今日推荐