您可以使用生成器表达式来轻松完成此操作。
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”的特性,代码如下:
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
不同时产生值。请保留HTML标签。