给出两个词:
AT
TC
我想生成所有可能的组合(这里不确定组合是否适用),这些组合可以通过将这两个字符串中的一个字符替换来生成,结果是:
^{pr2}$编辑:
我试过了:
from itertools import product
ref = "ACGT"
snp = "TGCA"
prod = product(ref,snp)
for p in prod:
print p
但结果是:
('A', 'T')
('A', 'G')
('A', 'C')
('A', 'A')
('C', 'T')
('C', 'G')
('C', 'C')
('C', 'A')
('G', 'T')
('G', 'G')
('G', 'C')
('G', 'A')
('T', 'T')
('T', 'G')
('T', 'C')
('T', 'A')
不是我要找的。我希望得到类似(每个结果的长度应与输入相同):
ACGT
TCGT
AGGT
ACGA
....
下面应该解决您的用例
考虑这样的情况:有两个字符串,每个字符串的长度为4。想象一下四个面具的长度。每个可能的位掩码都应该对应于一个字符串中的有效选择。在
鉴于:
结果如下:
^{pr2}$为了推广,考虑n-字符串生成以n为底的所有数字,直到这些字符串长度的顺序。(不确定如何处理非统一的字符串长度;但原理是相同的,即使您添加了某种从结果中筛选出来的“NULL”填充;类似于我们从常规十进制数表示中过滤前导零的方式)。在
我现在没有时间为此编写代码。但方法是将每个字符串映射到一个符号(数字或字符),并根据数字字符串及其长度在整数范围内进行迭代。例如,两个8个字符的字符串是28(256),而三个7个字符的字符串则是37(2187),依此类推。在
将每个整数转换为其在基中的表示形式,并查找映射,从存储在该键的值(字符串)中提取该位置的字符。这和你把整数转换成任意基数的方法是一样的,取模n并移动到零。在
您正在查找
itertools.product
,您可以使用如下内容:要以字符串形式获取这些值,可以使用列表理解作为:
^{pr2}$编辑(基于问题中的编辑)
对于您共享的新示例,您应该将
zip
与上面的list comprehension表达式和itertools.product
一起使用:相关问题 更多 >
编程相关推荐