基于Hamming-distan从python列表中删除字符串

2024-04-27 04:49:15 发布

您现在位置: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):
        raise ValueError("Undefined for sequences of unequal length")
    return sum(ch1 != ch2 for ch1, ch2 in zip(s1, s2))

我无法正确地迭代列表中的元素。请告诉我一个好办法?你知道吗


Tags: 字符串元素距离列表forlench1s2
1条回答
网友
1楼 · 发布于 2024-04-27 04:49:15

这正好产生了您所希望的输出:

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']

相关问题 更多 >