python-生成组合(itertools)?

python-生成组合(itertools)?,python,pycharm,itertools,Python,Pycharm,Itertools,有人能给我一个提示,让我走上正确的道路吗 我需要编写Python代码来提供所有组合,以解决以下问题: 我需要生成所有可能的字母组合。总有6个字母。但是,每个位置只能有某些字母,例如 第一个字符只能是字母a或t(2种可能性) 第二个字符可以是a、t或c(3种可能性) 第三个字符可以是g或t(2种可能性) 第四个字符可以是a、t、c或g(4种可能性) 第五个字符可以是c、g或t(3种可能性) 第六个字符可以是b a或t(2种可能性) 我认为我应该使用pythonitertools,但我所看到的所

有人能给我一个提示,让我走上正确的道路吗

我需要编写Python代码来提供所有组合,以解决以下问题: 我需要生成所有可能的字母组合。总有6个字母。但是,每个位置只能有某些字母,例如

  • 第一个字符只能是字母a或t(2种可能性)
  • 第二个字符可以是a、t或c(3种可能性)
  • 第三个字符可以是g或t(2种可能性)
  • 第四个字符可以是a、t、c或g(4种可能性)
  • 第五个字符可以是c、g或t(3种可能性)
  • 第六个字符可以是b a或t(2种可能性)
我认为我应该使用pythonitertools,但我所看到的所有示例都有固定数量的选项(在我的例子中是字母)可用于每个位置,而对于这一点,每个位置可用的字母会有所不同

非常感谢您的帮助

您想用于此任务吗

您需要为每个可能的值创建一个列表:

import itertools

l = [
        ['a','t'],
        ['a','t','c'],
        ['g','t'],
        ['a','t','c','g'],
        ['c','g','t'],
        ['a','t']
    ]

for out in itertools.product(*l):
    print out;
这将产出288个项目。一个小样本是:

('t', 't', 't', 'g', 'g', 't')
('t', 't', 't', 'g', 't', 'a')
('t', 't', 't', 'g', 't', 't')
('t', 'c', 'g', 'a', 'c', 'a')
('t', 'c', 'g', 'a', 'c', 't')
('t', 'c', 'g', 'a', 'g', 'a')
('t', 'c', 'g', 'a', 'g', 't')
('t', 'c', 'g', 'a', 't', 'a')
('t', 'c', 'g', 'a', 't', 't')
('t', 'c', 'g', 't', 'c', 'a')
('t', 'c', 'g', 't', 'c', 't')
('t', 'c', 'g', 't', 'g', 'a')
('t', 'c', 'g', 't', 'g', 't')
('t', 'c', 'g', 't', 't', 'a')
('t', 'c', 'g', 't', 't', 't')
('t', 'c', 'g', 'c', 'c', 'a')
('t', 'c', 'g', 'c', 'c', 't')
('t', 'c', 'g', 'c', 'g', 'a')

正如jonsharpe在评论中指出的,您还可以拥有一个有效字符串的列表(将上面的
l
变量替换为以下内容):

您想用于此任务吗

您需要为每个可能的值创建一个列表:

import itertools

l = [
        ['a','t'],
        ['a','t','c'],
        ['g','t'],
        ['a','t','c','g'],
        ['c','g','t'],
        ['a','t']
    ]

for out in itertools.product(*l):
    print out;
这将产出288个项目。一个小样本是:

('t', 't', 't', 'g', 'g', 't')
('t', 't', 't', 'g', 't', 'a')
('t', 't', 't', 'g', 't', 't')
('t', 'c', 'g', 'a', 'c', 'a')
('t', 'c', 'g', 'a', 'c', 't')
('t', 'c', 'g', 'a', 'g', 'a')
('t', 'c', 'g', 'a', 'g', 't')
('t', 'c', 'g', 'a', 't', 'a')
('t', 'c', 'g', 'a', 't', 't')
('t', 'c', 'g', 't', 'c', 'a')
('t', 'c', 'g', 't', 'c', 't')
('t', 'c', 'g', 't', 'g', 'a')
('t', 'c', 'g', 't', 'g', 't')
('t', 'c', 'g', 't', 't', 'a')
('t', 'c', 'g', 't', 't', 't')
('t', 'c', 'g', 'c', 'c', 'a')
('t', 'c', 'g', 'c', 'c', 't')
('t', 'c', 'g', 'c', 'g', 'a')

正如jonsharpe在评论中指出的,您还可以拥有一个有效字符串的列表(将上面的
l
变量替换为以下内容):

您想用于此任务吗

您需要为每个可能的值创建一个列表:

import itertools

l = [
        ['a','t'],
        ['a','t','c'],
        ['g','t'],
        ['a','t','c','g'],
        ['c','g','t'],
        ['a','t']
    ]

for out in itertools.product(*l):
    print out;
这将产出288个项目。一个小样本是:

('t', 't', 't', 'g', 'g', 't')
('t', 't', 't', 'g', 't', 'a')
('t', 't', 't', 'g', 't', 't')
('t', 'c', 'g', 'a', 'c', 'a')
('t', 'c', 'g', 'a', 'c', 't')
('t', 'c', 'g', 'a', 'g', 'a')
('t', 'c', 'g', 'a', 'g', 't')
('t', 'c', 'g', 'a', 't', 'a')
('t', 'c', 'g', 'a', 't', 't')
('t', 'c', 'g', 't', 'c', 'a')
('t', 'c', 'g', 't', 'c', 't')
('t', 'c', 'g', 't', 'g', 'a')
('t', 'c', 'g', 't', 'g', 't')
('t', 'c', 'g', 't', 't', 'a')
('t', 'c', 'g', 't', 't', 't')
('t', 'c', 'g', 'c', 'c', 'a')
('t', 'c', 'g', 'c', 'c', 't')
('t', 'c', 'g', 'c', 'g', 'a')

正如jonsharpe在评论中指出的,您还可以拥有一个有效字符串的列表(将上面的
l
变量替换为以下内容):

您想用于此任务吗

您需要为每个可能的值创建一个列表:

import itertools

l = [
        ['a','t'],
        ['a','t','c'],
        ['g','t'],
        ['a','t','c','g'],
        ['c','g','t'],
        ['a','t']
    ]

for out in itertools.product(*l):
    print out;
这将产出288个项目。一个小样本是:

('t', 't', 't', 'g', 'g', 't')
('t', 't', 't', 'g', 't', 'a')
('t', 't', 't', 'g', 't', 't')
('t', 'c', 'g', 'a', 'c', 'a')
('t', 'c', 'g', 'a', 'c', 't')
('t', 'c', 'g', 'a', 'g', 'a')
('t', 'c', 'g', 'a', 'g', 't')
('t', 'c', 'g', 'a', 't', 'a')
('t', 'c', 'g', 'a', 't', 't')
('t', 'c', 'g', 't', 'c', 'a')
('t', 'c', 'g', 't', 'c', 't')
('t', 'c', 'g', 't', 'g', 'a')
('t', 'c', 'g', 't', 'g', 't')
('t', 'c', 'g', 't', 't', 'a')
('t', 'c', 'g', 't', 't', 't')
('t', 'c', 'g', 'c', 'c', 'a')
('t', 'c', 'g', 'c', 'c', 't')
('t', 'c', 'g', 'c', 'g', 'a')

正如jonsharpe在评论中指出的,您还可以拥有一个有效字符串的列表(将上面的
l
变量替换为以下内容):


itertools.product('at'、'atc'、'gt'、…)
itertools.product('at'、'atc'、'gt'、…)
itertools.product('at'、'atc'、'gt'、…)
?您可以有一个字符串列表
['at'、'atc'、…]
。谢谢你,安迪。这正是我所需要的。@kye你可以有一个字符串列表
['at','atc',…]
Super。谢谢你,安迪。这正是我所需要的。@kye你可以有一个字符串列表
['at','atc',…]
Super。谢谢你,安迪。这正是我所需要的。@kye你可以有一个字符串列表
['at','atc',…]
Super。谢谢你,安迪。这正是我需要的。@kye