编程实现字符串仅显示首字母 其余字符替换为下划线
单词首字母保留、其余字符替换为下划线的实现方案
需求梳理
- 输入:单词列表,示例数据为
['cat', 'dog', 'chicken'] - 处理规则:每个单词仅保留首字母,剩余所有字母替换为下划线
- 预期输出:
['c__', 'd__', 'c______']
常见for循环实现出错的原因
大部分人用for循环写不出正确结果,基本是踩了两个典型的坑:
- Python的字符串是不可变类型,不支持直接通过索引原位修改内容,类似
word[1:] = '_'的写法会直接抛出类型错误 - 下划线数量和原单词长度不匹配,不管单词多长都只拼1个下划线,最终输出长度不符合要求
不用逐字符遍历单词做替换,利用Python的字符串切片特性直接取首字母,再拼接对应数量的下划线即可,逻辑更简单也不容易出错。
正确for循环实现代码
word_list = ['cat', 'dog', 'chicken'] result = [] for word in word_list: # 兼容空字符串边界场景,避免取首字母时触发索引越界报错 if not word: result.append("") continue # 取首字符,拼接「单词长度-1」个下划线 masked_word = word[0] + "_" * (len(word) - 1) result.append(masked_word) print(result) # 输出结果:['c__', 'd__', 'c______']
简化写法
如果不需要保留显式循环的处理流程,也可以直接用列表推导式一行生成结果:
word_list = ['cat', 'dog', 'chicken'] result = [word[0] + "_"*(len(word)-1) if word else "" for word in word_list]
提示:如果你的单词列表里可能混入非字符串类型的元素,需要在循环里先加类型判断,避免运行报错。
内容的提问来源于stack exchange,提问作者Ember Noble
相关产品推荐
相关产品推荐

