python - 计算两个字符串之间的差异

标签 python

我正在尝试计算两个导入字符串(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))

另一种利用 True1False0 的奇怪方式是:

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 过滤器使生成器仅在 ab 不同时生成一个值。

关于python - 计算两个字符串之间的差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28423448/

相关文章:

python - 将值添加到 PySpark 中的 DenseVector 中

python - 手动生成的 JSON 可以工作,但通过 json.dumps 创建的 JSON 不起作用,即使输出看起来完全相同

python - 如何重置多重索引?

python - 从文件中读取数据,将其拆分为列表,然后获取该数据并将其放入函数中

python - 如何使 django-registration 使用我自定义的 UserCreationForm 和 UserChangeForm?

python - 扩展 xgboost.XGBClassifier

python - 如何持续运行 Python 脚本?

python - 类型错误 : __init__() got an unexpected keyword argument 'check_hostname' in GAE with https

python - 如何在不使用文件或目录的情况下在 python 中播放任何类型的声音

python - "' int ' object is not iterable"在 while