我正在尝试计算两个导入字符串(seq1 和 seq2,导入代码未列出)之间的差异数,但在运行程序时没有得到任何结果。我希望输出显示为“2 个差异”之类的内容。不确定我哪里出错了......
def difference (seq1, seq2):
count = 0
for i in seq1:
if seq1[i] != seq2[i]:
count += 1
return (count)
print (count, "differences")
最佳答案
您可以使用生成器表达式非常简单地完成此操作
count = sum(1 for a, b in zip(seq1, seq2) if a != b)
如果序列的长度不同,那么您可以将长度的差异视为内容的差异(我会)。在这种情况下,标记一个额外的部分以说明它
count = sum(1 for a, b in zip(seq1, seq2) if a != b) + abs(len(seq1) - len(seq2))
另一种利用 True
为 1
和 False
为 0
的奇怪方式是:
sum(a != b for a, b in zip(seq1, seq2))+ abs(len(seq1) - len(seq2))
zip
是一个 python 内置函数,可让您一次迭代两个序列。它也会终止于最短的序列,观察:
>>> seq1 = 'hi'
>>> seq2 = 'world'
>>> for a, b in zip(seq1, seq2):
... print('a =', a, '| b =', b)
...
a = h | b = w
a = i | b = o
这将计算类似于 sum([1, 1, 1])
,其中每个 1
代表两个序列之间的差异。 if a != b
过滤器使生成器仅在 a
和 b
不同时生成一个值。
关于python - 计算两个字符串之间的差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28423448/