ich eine Liste von Tupeln habe:Bearbeiten von Elementen einer Liste von Tupeln basierend auf Hammingabstands
f_list = [('AGCTCCCCGTTTTC', 34), ('TTCATTCCTCTCTC', 1), ('AGCTCCCCGGTTTC', 1)]
Wenn die Hamming-Distanz zwischen zwei Strings weniger als 3, würde Ich mag die Elemente verschmelzen durch Hinzufügen die zweiten Einträge jedes Elements. Wenn die obige Bedingung nicht erfüllt ist, möchte ich das Element beibehalten wie es ist. Der Ausgang ich will, ist:
f_list = [('AGCTCCCCGTTTTC', 35),('TTCATTCCTCTCTC', 1)]
ich die Funktion für Hamming-Distanz haben:
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))
benutzte ich die folgenden durch die Liste zu durchlaufen die entsprechenden Elemente zu identifizieren, doch bin ich nicht sicher, wie man Ändern Sie die ursprüngliche Liste:
for e in f_list:
[item for item in f_list if hamming(e[0],item[0]) < 3]
Output:
[('AGCTCCCCGTTTTC', 34), ('AGCTCCCCGGTTTC', 1)]
[('TTCATTCCTCTCTC', 1)]
[('AGCTCCCCGTTTTC', 34), ('AGCTCCCCGGTTTC', 1)]