Python 3.x 有没有办法创建保持列表中元素顺序的组合?

Python 3.x 有没有办法创建保持列表中元素顺序的组合?,python-3.x,combinations,Python 3.x,Combinations,我有一个函数,它为我提供一个列表列表。列表的长度对应于组合的长度,而子列表的长度对应于可在该位置使用的不同字母。因此,例如,该列表的预期组合是“WICK”、“WICY”、“WIJK”和“WIJY”。我知道如何使用嵌套for循环生成这些组合,如下所示: for a in lst[0]: for b in lst[1]: for c in lst[2]: for d in lst[3]: print(a+b+c+d)

我有一个函数,它为我提供一个列表列表。列表的长度对应于组合的长度,而子列表的长度对应于可在该位置使用的不同字母。因此,例如,该列表的预期组合是“WICK”、“WICY”、“WIJK”和“WIJY”。我知道如何使用嵌套for循环生成这些组合,如下所示:

for a in lst[0]:
    for b in lst[1]:
        for c in lst[2]:
            for d in lst[3]:
                print(a+b+c+d) 

但是,由于每个列表的长度可能会有所不同,因此手动执行对于我的程序来说是不可行的。有什么方法可以自动完成吗?

我想你要找的是itertools模块中的product(笛卡尔积的缩写)。你可以读到它

以下是示例代码:

import itertools as it
data = [['W'], ['I'], ['C', 'J'], ['K', 'Y']] #not a very good variable name
combos = list(it.product(*data)) 

根据Qn,考虑到父列表中的4个元素,这是硬核的

lst = [['W'], ['I'], ['C', 'J'], ['K', 'Y']]

for a in range(len(lst[0])):
    for b in range(len(lst[1])):
        for c in range(len(lst[2])):
            for d in range(len(lst[3])):
                print(lst[0][a]+lst[1][b]+lst[2][c]+lst[3][d])