比较两个字符串中的值,然后返回可以放入数组的结果

0 投票
4 回答
906 浏览
提问于 2025-04-17 06:12

我在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]

撰写回答