Python推导式中如何访问字符串索引实现字符按规则重复拼接
实现代码
直接给出符合要求的列表推导式写法,可直接运行验证:
names = ["Cola", "Salah"] names1 = [''.join(c * (i + 1) for i, c in enumerate(s)) for s in names] print(names1) # 输出:['Coolllaaaa', 'Saalllaaaahhhhh']
原理解释
- 外层遍历每个原字符串
s - 内层通过
enumerate(s)同时获取每个字符的索引i和字符本身c,因为Python的enumerate默认从0开始计数,所以重复次数用i + 1就能匹配「按对应索引重复」的要求 - 最后用
str.join()把同一字符串下的所有重复后的字符拼接成完整字符串
Unicode兼容处理
Python 3的字符串原生支持Unicode编码,上述代码对普通单码点Unicode字符(如中文、韩文、常规emoji等)可直接正常处理。
如果需要处理带组合标记的复杂Unicode字形(比如带声调的拼音字符、带修饰符的emoji等),避免将单个字形拆分为多个独立元素,可以使用regex库的字形匹配规则优化,示例如下:
import regex names = ["Café", "你好🌷"] names1 = [''.join(g * (i + 1) for i, g in enumerate(regex.findall(r'\X', s))) for s in names]
内容的提问来源于stack exchange,提问作者Coder20192020
相关产品推荐
相关产品推荐

