【发布时间】:2014-07-16 17:49:22
【问题描述】:
我有 2 个字符串要比较。问题是我不知道如何同时对两个切片进行迭代,然后在每个切片上运行比较代码。下面是我尝试通过在 for 循环中使用 for 循环来运行的代码(每个字符串一个) 这没有带来任何错误,但只有第一个字符串被迭代切片并打印到屏幕上。第二次尝试是将 2 个 for 循环合并在一起,但是出现了提供的错误消息,它清楚地解释了失败的原因,但是我不知道解决该错误的方法。
for循环中for循环的代码
for i in range(8, len(seq1)):
seq1i = seq1[0:i]
print seq1i
for i in range(8,len(seq2)):
seq2i = seq2[0:i]
print seq2i
for c1, c2 in zip(seq1i, seq2i):
if c1 == c2:
counter += 1
else:
break
print "String share the longest common prefix of length %d: %s" % (counter, seq1[:counter])
if counter >= 8:
print " Match found, match length %d" % counter
尝试合并 for 循环:
for i1,i2 in range(8,len(seq1, seq2)):
for c1, c2 in zip(seq1i, seq2i):
if c1 == c2:
counter += 1
else:
break
print "String share the longest common prefix of length %d: %s" % (counter, seq1[:counter])
if counter >= 8:
print " Match found, match length %d" % counter
这导致了错误:
TypeError Traceback (most recent call last)
<ipython-input-26-9c4822069792> in <module>()
----> 1 for i1,i2 in range(8,len(seq1, seq2)):
2 for c1, c2 in zip(seq1i, seq2i):
3 if c1 == c2:
4 counter += 1
5 else:
TypeError: len() takes exactly one argument (2 given)
我认为必须有一种方法可以对字符串进行每次迭代切片,并且在制作它们时可以运行匹配的(如果 c1 == c2)代码。
想要的输出是:
如果 seq1 和 seq2:
seq1 = 'ATCGATCGATCGAAAA'
seq2 = 'ATCGATCGATCCCCCC'
A
A
AT
AT
ATC
ATC
ATCG
ATCG
ATCGA
ATCGA
ATCGAT
ATCGAT
ATCGATC
ATCGATC
ATCGATCG
ATCGATCG
ATCGATCGA
ATCGATCGA
ATCGATCGAT
ATCGATCGAT
ATCGATCGATC
ATCGATCGATC
String share the longest common prefix of length 10:ATCGATCGATC
【问题讨论】:
-
你基本上想做什么?
标签: python python-2.7 slice