有人可以给我一些提示,让我走上正确的道路。
我需要编写Python代码来提出所有组合来解决以下问题: 我需要生成所有可能的字母组合。总会有6个字母。但是,只有某些字母可以在每个位置,例如
我认为我应该使用Python itertools,但我看过的所有示例都为每个位置提供了固定数量的选项(在我的例子中是字母),而为此,可用的字母将根据位置而变化。
任何帮助非常感谢。
答案 0 :(得分:3)
您想使用itertools.product
执行此任务
您需要为每个可能的值创建一个列表列表:
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
变量代替):
l = ['at','atc','gt','atcg','cgt','at']