Python 基于序列位置在列表之间创建组合

Python 基于序列位置在列表之间创建组合,python,python-2.7,itertools,cartesian-product,Python,Python 2.7,Itertools,Cartesian Product,我正试图从已知蛋白质序列中的保守基序中创建序列 例如: seq1 = ['ABC', 'DEF', 'GHI'] seq2 = ['JKL', 'MNO', 'PUR'] seq3 = ['QRS', 'TUV' 'WXY'] 我想要的结果是: ABC DEF PUR ABC DEF WXY ABC MNO GHI ABC MNO WXY ABC MNO PUR JKL MNO GHI JKL MNO WXY JKL DEF GHI JKL DEF WXY JKL DEF PUR

我正试图从已知蛋白质序列中的保守基序中创建序列

例如:

seq1 = ['ABC', 'DEF', 'GHI']
seq2 = ['JKL', 'MNO', 'PUR']
seq3 = ['QRS', 'TUV' 'WXY']
我想要的结果是:

ABC DEF PUR
ABC DEF WXY 
ABC MNO GHI
ABC MNO WXY
ABC MNO PUR 
JKL MNO GHI 
JKL MNO WXY 
JKL DEF GHI 
JKL DEF WXY 
JKL DEF PUR 
...
总共3^3个组合

我已经尝试在itertools模块中使用函数(
组合
产品
,等等),但没有任何结果


我是编程新手,可能有一些非常明显的地方我遗漏了…

如果我理解正确,您正在寻找每个列表的分组元素的笛卡尔乘积。为此,我们可以在将序列压缩在一起后使用

In[1]: from itertools import product, izip
In[2]: seq1 = ['ABC', 'DEF', 'GHI'] 
In[3]: seq2 = ['JKL', 'MNO', 'PUR']
In[4]: seq3 = ['QRS', 'TUV', 'WXY']
In[5]: list(product(*izip(seq1, seq2, seq3)))
Out[5]: 
[('ABC', 'DEF', 'GHI'),
 ('ABC', 'DEF', 'PUR'),
 ('ABC', 'DEF', 'WXY'),
 ('ABC', 'MNO', 'GHI'),
 ('ABC', 'MNO', 'PUR'),
 ('ABC', 'MNO', 'WXY'),
 ('ABC', 'TUV', 'GHI'),
 ('ABC', 'TUV', 'PUR'),
 ('ABC', 'TUV', 'WXY'),
 ('JKL', 'DEF', 'GHI'),
 ('JKL', 'DEF', 'PUR'),
 ('JKL', 'DEF', 'WXY'),
 ('JKL', 'MNO', 'GHI'),
 ('JKL', 'MNO', 'PUR'),
 ('JKL', 'MNO', 'WXY'),
 ('JKL', 'TUV', 'GHI'),
 ('JKL', 'TUV', 'PUR'),
 ('JKL', 'TUV', 'WXY'),
 ('QRS', 'DEF', 'GHI'),
 ('QRS', 'DEF', 'PUR'),
 ('QRS', 'DEF', 'WXY'),
 ('QRS', 'MNO', 'GHI'),
 ('QRS', 'MNO', 'PUR'),
 ('QRS', 'MNO', 'WXY'),
 ('QRS', 'TUV', 'GHI'),
 ('QRS', 'TUV', 'PUR'),
 ('QRS', 'TUV', 'WXY')]