基于匹配规则用Python3.x生成字符串对的摘要字符串
高效生成字符匹配摘要字符串的Python实现
搞定这个字符匹配需求很简单,我们可以用Python里简洁又高效的写法来实现,完全贴合你给出的规则。
实现思路
核心就是逐个配对两个字符串的字符,然后按规则判断每个位置的输出字符:
- 先检查两个字符串长度是否相等(虽然你说必须相等,但加个检查能避免意外报错)
- 用
zip()把两个字符串的字符按位置一一对应配对,遍历每一对字符 - 按规则判断:字符相同的情况下,下划线输出
U,其他输出S;字符不同输出N - 用
''.join()把所有结果字符拼接成最终的摘要字符串(这是Python里最高效的字符串拼接方式)
完整代码
string_a = 'he_lo_world' string_b = 'hi_low_oldd' # 先校验长度相等,避免后续逻辑出错 if len(string_a) != len(string_b): raise ValueError("两个字符串长度必须相等") # 生成摘要字符串,用生成器表达式更节省内存 summary = ''.join( 'U' if c1 == c2 == '_' else 'S' if c1 == c2 else 'N' for c1, c2 in zip(string_a, string_b) ) print(summary)
代码解释
zip(string_a, string_b):把两个字符串的字符按位置一一配对,比如第一个字符是('h', 'h'),第二个是('e', 'i'),以此类推- 生成器表达式:相比列表推导式,不需要创建中间列表,更节省内存(短字符串差异不大,但长字符串优势明显)
- 条件判断:先判断两个字符是否都是下划线(满足则输出
U),再判断是否相同(满足则输出S),否则输出N,逻辑完全贴合你的规则 ''.join():一次性拼接所有字符,避免了循环拼接字符串的低效问题(因为Python字符串是不可变类型,循环拼接会反复生成新对象)
测试结果
用你给出的字符串测试,输出结果是:SNUSSNNNNN(如果示例字符串长度有笔误,调整成等长即可正常运行)
内容的提问来源于stack exchange,提问作者ShanZhengYang
相关产品推荐
相关产品推荐

