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')]