全局对齐两个字符串,并返回python中不匹配和插入/缺失字符的索引

全局对齐两个字符串,并返回python中不匹配和插入/缺失字符的索引,python,string,sequence-alignment,Python,String,Sequence Alignment,假设我有两个长度相等的字符串: s1 = 'tommy' s2 = 'tammi' 我如何编写一个函数来返回不匹配的索引,如下所示: s1 = 'tommy' s2 = 'tammi' mismatch = Get_Misalignment_Index(s1, s2) print(mismatch) [1, 4] 但也可以处理丢失或插入的字符: s3 = 'drain' s4 = 'rains' gaps = Get_Misalignment_Index(s3, s4) pr

假设我有两个长度相等的字符串:

s1 = 'tommy'

s2 = 'tammi'
我如何编写一个函数来返回不匹配的索引,如下所示:

s1 = 'tommy'

s2 = 'tammi'

mismatch = Get_Misalignment_Index(s1, s2)

print(mismatch)

[1, 4]
但也可以处理丢失或插入的字符:

s3 = 'drain'

s4 = 'rains'

gaps = Get_Misalignment_Index(s3, s4)

print(gaps)

[0, 5]

这项任务在python中可行吗?

您可以使用列表理解轻松完成:

def find_dupes(s1, s2):
    return [x for x in range(len(s1)) if s1[i] != s2[i]] or None

是的!但是你能告诉我们你做了什么尝试吗?第二个例子不起作用,因为它不能对齐字符串。它给出了[0,1,2,3,4],我不确定第二个例子的目的是什么。My函数返回所有替换的索引。s3到s4的对齐方式为“排水”-,因此索引0和5是插入和删除字符的位置。如果不任意选择一个,任何函数都无法同时检测这两个字符,因为任何移位都可能导致两个字符串不匹配。移位或索引替换的字符是否认为解决方案将涉及生成新字符串,然后应用函数如果在答案中插入对齐的字符串“drain-”和“-rains”,则返回[0,5]。