例如:
String 1: AGGCCT
|| | |
String 2: AGCCAT
这两个字符串在4个位置是相同的,所以我想要的函数将返回4。
除了显示同时迭代两个字符串的明显方法之外,还有一种聪明的(即快速)方法吗?
谢谢! URI
答案 0 :(得分:7)
我不认为任何“聪明”的技巧会胜过明显的方法,如果它执行得好:
sum(c1 == c2 for c1, c2 in itertools.izip(s1, s2))
或者,如果使用布尔算术让你烦恼,
sum(1 for c1, c2 in itertools.izip(s1, s2) if c1 == c2)
答案 1 :(得分:1)
虽然我更喜欢delnan的生成器表达式,但这也适用:
>>> from itertools import imap
>>> from operator import eq
>>> sum(imap(eq, 'abcde', 'aacce'))
3
答案 2 :(得分:1)
如果你正在寻找更好的表现,我怀疑为此难以击败numpy:
import numpy as np
a1 = np.frombuffer(s1, dtype=np.byte)
a2 = np.frombuffer(s2, dtype=np.byte)
print (a1==a2).sum()
在我的系统上,这比使用itertools快10倍。