Python条件语句缺失else子句?两种实现为何结果不同?
为什么Option 1和Option 2的Python实现结果不同?
Option 1 执行逻辑解析
这段代码是正确统计每个元素出现次数的实现,逻辑如下:
- 初始化空字典
output用来存储计数结果 - 遍历输入中的每个
item:- 如果
item还没在output里,先把它的初始值设为0 - 不管
item是不是第一次出现,都会执行output[item] = output[item] + 1 - 举个例子:第一次碰到元素
"cat",先设为0,立刻加1变成1;第二次碰到直接加1变成2,最终得到的是该元素实际出现的次数。
- 如果
Option 2 的问题所在
这段代码会统计错误,原因是加1操作被放到了else分支里:
- 同样初始化空字典
output - 遍历每个
item:- 如果
item不在output里,只做初始化设为0,但不会执行加1 - 只有当
item已经在output里时,才会进入else分支加1 - 举个例子:第一次碰到
"cat",计数停在0;第二次碰到才加1变成1,最终统计的次数比实际少1,完全不符合预期。
- 如果
核心差异
Option 1的加1操作是无条件执行的——不管元素是不是第一次出现,都会完成"初始化(如果需要)+ 计数+1"的完整流程;而Option 2把加1限制在了else分支,导致第一次出现的元素没有被计入计数,这就是两者结果不同的根本原因。
内容的提问来源于stack exchange,提问作者SunflowerParty
相关产品推荐
相关产品推荐

