我的问题在于我的第二个功能代码。
这是我的代码到目前为止.... def simi(d1,d2): dna_1 = d1.lower() dna_2 = d2.lower() lst = [] i = 0 而我< LEN(dna_1): 如果dna_1 [i] == dna_2 [i]: lst.append(1) i + = 1 return len(lst)/ len(d1)
def match(list_1, d , s):
dna = []
for item in list_1:
dna.append(simi(item, d))
if max(dna) < s:
return None
return list_1[max(dna)]
答案 0 :(得分:0)
你有两个问题,第一个是你在尝试所有元素之前在循环中return
,其次你的函数simi(item, d)
如果它正常工作则返回一个浮点数,所以试图索引一个列表float
也将失败。除了错误或返回None
之外,您的代码无法执行任何操作。
我想你想要跟踪每次迭代的最佳状态,并根据simi
距离计算的内容以及simi
是否为&gt;返回最佳项目。 s或者返回None:
def match(list_1, d , s):
best = None
mx = float("-inf")
for item in list_1:
f = simi(item, d)
if f > mx:
mx = f
best = item
return best if mx > s else None
你也可以在simi中使用range而不是你的while循环使用list comp:
def simi(d1,d2):
dna_1 = d1.lower()
dna_2 = d2.lower()
lst = [1 for i in range(len(dna_1)) if dna_1[i] == dna_2[i] ]
return len(lst) / len(dna_1)
但是如果你只是想在每次条件为True时加1,你可以使用sum:
def simi(d1,d2):
dna_1 = d1.lower()
dna_2 = d2.lower()
sm = sum(dna_1[i] == dna_2[i] for i in range(len(dna_1)))
return sm / len(dna_1)
答案 1 :(得分:0)
使用一些内置函数:
best_match = max(list_of_samples, key=similarity_with_sample)
现在,similarity_with_sample是一个接受一个参数的函数,并返回与TACgtAcGaCGT&#39;的相似性。
现在使用它作为内置最大函数的关键参数:
s
我不确定你的div
变量在做什么。