你可以用生成器表达式
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))
编写另一个weirdish方式这需要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
表示两个序列之间的差异。当a
和b
不同时,if a != b
过滤器会使发生器仅产生一个值。
缩进是非常重要的。(在拉链1的a,b(SEQ1,SEQ2)如果!= B) – 2015-02-10 03:16:38
数= SUM 打印(计数) 工作太棒了! – 2015-02-10 03:23:47