函数在for循环(python)中生成的输出的迭代求和



我的目标是迭代地对代码生成的输出求和。

下面的代码可以准确地计算两个字符串之间的hamming距离,但不能将多个字符串间的距离相加。请参阅下面的示例字符串:

w=['ground', 'joint']
c=['gnoufd', 'johnt']
def hamming_distance(s1, s2):
    if len(s1)==len(s2):
        return sum(x1 != x2 for x1, x2 in zip(s1, s2))
for x,y in zip(w,c):
    for j in x:
        for k in y:
           l=hamming_distance(x, y)
    print l

上述代码的输出为:1 2我试着使用列表理解,希望我能得到列表中的输出并将其汇总,但得到了错误的输出。

for x,y in zip(w,c):
    k=[hamming_distance(x,y) for j,k in zip(x,y)]
    print k

期望输出:3---(以上一个和两个的总和)

有什么建议吗?谢谢

在此块中:

for x,y in zip(w,c):
    for j in x:
        for k in y:
           l=hamming_distance(x, y)
    print l

您不使用jk,因此可以去掉这些循环。

for x,y in zip(w,c):
    l=hamming_distance(x, y)
    print l

这更容易被翻译成生成器表达式。

k = [hamming_distance(x, y) for x, y in zip(w,c)]
print k
print sum(k)

输出:

[2,1]
3

不要使用for循环,只需使用map即可:

diff = map(hamming_distance, w, c)
# [2, 1]
print sum(diff)
# 3

最新更新