Python字符串分段长度对比问题:循环未遍历全元素致结果错误
修复对比点分隔字符串分段长度的Python代码
原代码问题梳理
- 冗余的列表复制:原代码里用循环逐个添加元素到新列表的操作毫无意义,直接使用分割后的结果即可,完全没必要多此一举
- 循环逻辑错误:最后一个循环第一次迭代就直接return,导致只对比了第一个分段和另一个字符串的最后一个分段(j停留在之前循环的最后索引),根本没完成全部分段的对比
- 变量使用混乱:
f[j]中的j没有在最后循环中更新,一直沿用之前的旧值,完全不符合对应分段对比的逻辑
修复后的代码
import re def check_segment_length_pattern(a, g): # 把两个字符串按点分割成分段列表 segments_a = re.split(r'\.', a) segments_g = re.split(r'\.', g) # 先判断分段数量是否一致,不一样直接说明模式不同 if len(segments_a) != len(segments_g): return True # 逐个对比对应位置的分段长度 for seg_a, seg_g in zip(segments_a, segments_g): if len(seg_a) != len(seg_g): return True # 所有分段长度都匹配,模式相同 return False # 测试调用 d = "66.22.33" u = "66.2.33" print(check_segment_length_pattern(d, u)) # 正确返回True
代码说明
- 简化操作:直接使用分割结果作为列表,去掉无意义的循环复制
- 前置校验:先判断分段数量,数量不同的字符串肯定模式不同
- 对应遍历:用
zip同时遍历两个列表的对应元素,只要有一对长度不匹配就立即返回True(表示模式不同) - 全匹配返回
False:只有当所有对应分段长度都一致时,才返回False表示模式相同
内容的提问来源于stack exchange,提问作者dan boor
相关产品推荐
相关产品推荐

