基于汉明距离从python列表中删除字符串
我有一张单子基于汉明距离从python列表中删除字符串,python,Python,我有一张单子 l = ['ATCGGG','CGGGAT,CGGGAA','ATGGCC,CTCCCT,CTCCGT,TTAAGG'] 我想计算列表中每个元素中字符串之间的汉明距离,并删除小于或等于另一个元素的汉明距离1的字符串。示例预期输出为 l = ['ATCGGG','CGGGAT','ATGGCC,CTCCCT,TTAAGG'] 我知道如何计算两个字符串之间的汉明距离: def hamming(s1, s2): if len(s1) != len(s2): r
l = ['ATCGGG','CGGGAT,CGGGAA','ATGGCC,CTCCCT,CTCCGT,TTAAGG']
我想计算列表中每个元素中字符串之间的汉明距离,并删除小于或等于另一个元素的汉明距离1的字符串。示例预期输出为
l = ['ATCGGG','CGGGAT','ATGGCC,CTCCCT,TTAAGG']
我知道如何计算两个字符串之间的汉明距离:
def hamming(s1, s2):
if len(s1) != len(s2):
raise ValueError("Undefined for sequences of unequal length")
return sum(ch1 != ch2 for ch1, ch2 in zip(s1, s2))
我无法正确迭代列表中的元素。请告诉我一个好方法?这正好产生您所说的您想要的输出:
result = []
for group in l:
pieces = group.split(",")
thischunk = []
for piece in pieces:
if all(hamming(piece, base) > 1 for base in thischunk):
thischunk.append(piece)
result.append(",".join(thischunk))
print(result)
输出为:
['ATCGGG', 'CGGGAT', 'ATGGCC,CTCCCT,TTAAGG']