比较两个字符串中的值,然后返回可以放入数组的结果
我在Python中有两个字符串,已经把它们转换成了列表:
Seq1 = [x1,x2,x3,x4]
Seq2 = [y1,y2,y3,y4]
这两个字符串长度相同,里面只包含字母 'a'
、'c'
、'g'
和 'u'
。
然后我创建了一个空的矩阵,大小是 len(Seq1)
乘以 len(Seq2)
:
a = numpy.zeros(shape=len(Seq1),len(Seq2))
接下来,我想比较这两个列表的值,如果相同就放一个 1
,如果不同就放一个 0
。这个值应该放在对应的数组元素里,也就是说:
if seq1[0] == seq[0]:
a[0,0] = [1]
else:
a[0,0] = [0]
# repeat for all the values.
print a
我之前有一个循环可以工作,但它只填充了第一行和第一列。我发现问题出在像 Seq1[i] == Seq2[j]
这样的范围函数上,但我搞不清楚怎么解决。
4 个回答
0
我猜这可能是一个生物信息学的问题。不过,我不太明白这个问题的具体目的是什么。这里我列出了一个通用的匹配系统,你可以使用。
>>> for s1 in xrange(len(seq1)):
... for s2 in xrange(len(seq2)):
... if seq1[s1]==seq2[s2]:
... a[s1,s2]=1
... else:
... a[s1,s2]=0
1
遍历这两个列表,并进行比较:
for x in range(len(Seq1)):
for y in range(len(Seq2)):
a[x, y] = (Seq1[x] == Seq2[y])
0
写这个循环的简洁方法是:
import itertools
for i1,i2 in itertools.product(xrange(len(Seq1)), xrange(len(Seq2))):
a[i1,i2] = Seq1[i1] == Seq2[i2]