You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何sum后加‘1’可避免语法错误?汉明距离函数问题解析

汉明距离函数的语法疑问解析

可正常运行的代码

def hamming_distance(dna_1,dna_2):
    hamming_distance = sum(1 for a, b in zip(dna_1, dna_2) if a != b)
    return hamming_distance

触发语法错误的代码

def hamming_distance(dna_1,dna_2):
    hamming_distance = sum(for a, b in zip(dna_1, dna_2) if a != b)
    return hamming_distance

错误原因解析

  1. 生成器表达式的语法规则:Python的生成器表达式必须遵循「表达式 for 元素 in 可迭代对象 if 条件」的结构。当它作为函数的唯一参数时,可以省略外层括号,但开头的生成表达式是必填项——你得明确指定每次迭代要产出什么值。
  2. sum函数的工作逻辑:sum()需要接收一个可迭代对象,对其中所有元素求和。正确代码里,1 for a, b in zip(...) if a != b是一个生成器,每次遇到碱基对不相等的情况就产出一个1,sum把这些1累加后,正好得到汉明距离的数值。
  3. 错误代码的核心问题:去掉1之后,for a, b in zip(...) if a != b不是合法的可迭代对象,Python解释器无法识别这种语法结构,直接抛出SyntaxError。

内容的提问来源于stack exchange,提问作者Ricky Everest

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 10:11:34