假设我们有以下列表
lsta = ['a','b','c']
lstb = ['1','2','3','4']
lstc = ['x','y']
我想创建一个可以消耗任意数量的不同列表的函数,并将它们以所有组合的形式附加在一起,并且lista项始终排在第一位,lstb项总是第二位,而lstc项总是第三位。
结果将是上述列表中的24种组合(第一列表中的3项,第二列中的4项,以及第三列中的2项)。例如,这里是一个示例:
[['a1x','a2x','a3x','a4x','b1x','b2x','b3x'....]]
答案 0 :(得分:6)
这是“笛卡尔积”,因此您可以使用itertools.product
:
>>> lsta = ['a','b','c']
>>> lstb = ['1','2','3','4']
>>> lstc = ['x','y']
>>> from itertools import product
>>> ["".join(t) for t in product(lsta, lstb, lstc)]
['a1x', 'a1y', 'a2x', 'a2y', 'a3x', 'a3y', 'a4x', 'a4y',
'b1x', 'b1y', 'b2x', 'b2y', 'b3x', 'b3y', 'b4x', 'b4y',
'c1x', 'c1y', 'c2x', 'c2y', 'c3x', 'c3y', 'c4x', 'c4y']
无论每个列表是多长,或者您拥有多少列表,这都会有效。
答案 1 :(得分:2)
from itertools import product
lsta = ['a','b','c']
lstb = ['1','2','3','4']
lstc = ['x','y']
["".join(i) for i in product(lsta,lstb,lstc)]
输出
['a1x', 'a1y', 'a2x', 'a2y', 'a3x', 'a3y', 'a4x', 'a4y',
'b1x', 'b1y', 'b2x', 'b2y', 'b3x', 'b3y', 'b4x', 'b4y',
'c1x', 'c1y', 'c2x', 'c2y', 'c3x', 'c3y', 'c4x', 'c4y']