Вы можете сделать это довольно плоско с выражением генератора
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
является питон встроенный, который позволяет выполнять итерацию по двум последовательностям одновременно. Это также будет прекращено по кратчайшему последовательности, заметит:
>>> 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
отличаются.
отступы очень важно .. –
Количество = сумма (1 для а, б, в молнии (seq1, seq2) если! = Б) печати (количество) работал отлично! –