首页 > 解决方案 > Python:寻找组合

问题描述

我有一个列表,为了更容易理解它的结构,我会这样写出来:

mylist = [[["a","b","c","d"]...]...]

...重复上一个列表的意思(尽管里面的值可能会改变)

一个示例列表是:

mylist = [[["a","b","c","d"], ["e","f","g","h"]], [["i", "j", "k", "l"]], [["m","n","o","p"], ["q","r","s","t"]]]

我目前的方法是:

mylist2 = []
for a in mylist[0]:
    for b in mylist[1]:
        for c in mylist[2]:
            mylist2.append([a,b,c])

然而,这很长,特别是因为在我的实际代码中它持续到for x in mylist[35]

我有更好的方法来编写这段代码吗?

标签: pythonpython-3.x

解决方案


你的代码

%%timeit
mylist2 = []
for a in mylist[0]:
    for b in mylist[1]:
        for c in mylist[2]:
            mylist2.append([a,b,c])
# 809 ns ± 18.8 ns per loop (mean ± std. dev. of 7 runs, 1000000 loops each)

利用itertools

import itertools
%%timeit
list(itertools.product(*mylist))
# 528 ns ± 11.4 ns per loop (mean ± std. dev. of 7 runs, 1000000 loops each)

推荐阅读