2024-10-01 11:32:48 发布
网友
我有一个随机生成的值列表附在一个列表(z)上,所以我所做的是将相邻的两个索引转换为单独的字符串,以便相互比较。我需要使列表中所有字符串之间的汉明距离最多为3。我也不能使用任何模块。 任何帮助都将不胜感激
z = ["AAATCG", "GAGCGT"] i = 0 s1 = "" s2 = "" while i < len(z) -1: s1 = z[i] i = i+1 s2 = z[i]
之后我就迷路了
最好使用for循环。在下面的代码中z[0] = "AAATCG"和z[1] = "GAGCGT"。if语句检查字符串中的字母是否不同,如果它们不同ham_dist则递增1
for
z[0] = "AAATCG"
z[1] = "GAGCGT"
if
ham_dist
1
# For the Hamming distance ham_dist = 0 z = ["AAATCG", "GAGCGT"] for idx in range(len(z[0])): if z[0][idx] != z[1][idx]: ham_dist += 1 print(ham_dist)
如果要编辑字符串以将汉明距离减少到零,则以下代码将编辑第一个字符串以复制第二个字符串。如果你想换一种方式,只需颠倒标记即可
z = ["AAATCG", "GAGCGT"] z_0_list = list(z[0]) z_1_list = list(z[1]) orig_ham_dist = 0 new_ham_dist = 0 z_ouput = [] # Calculate original Hamming distance & edit strings for idx in range(len(z[0])): if z_0_list[idx] != z_1_list[idx]: z_0_list[idx] = z_1_list[idx] orig_ham_dist += 1 z_ouput.append("".join(z_0_list)) z_ouput.append("".join(z_1_list)) # Calculate new Hamming distance for idx in range(len(z_ouput[0])): if z_ouput[0][idx] != z_ouput[1][idx]: new_ham_dist += 1 print(orig_ham_dist) print(z) print(' -') print(new_ham_dist) print(z_ouput)
最好使用
for
循环。在下面的代码中z[0] = "AAATCG"
和z[1] = "GAGCGT"
。if
语句检查字符串中的字母是否不同,如果它们不同ham_dist
则递增1
如果要编辑字符串以将汉明距离减少到零,则以下代码将编辑第一个字符串以复制第二个字符串。如果你想换一种方式,只需颠倒标记即可
相关问题 更多 >
编程相关推荐