首页 > 解决方案 > 给定一个字符串,如何用每个重复的字母生成一个新字符串?

问题描述

给定这样的字符串:

a = 'monkeys'

b = 'hi how are you'

如何生成具有一个重复字符的相同字符串,例如:

mmonkeys
moonkeys
monnkeys
monkkeys
monkeeys
monkeyss

或者

hhi how are you
hii how are you
hi hhow are you
hi hoow are you
hi howw are you
hi how aare you
hi how arre you
hi how aree you
hi how are yyou
hi how are yoou
hi how are youu

我尝试使用 python 切片,例如第一种和最后一种情况:

a[:1]*1+a[:-1]+a[-1]

或者

a[:-1]+a[-1:]*2

但是,我想知道是否有更蟒蛇的方式来做到这一点?

标签: pythonstringlist-comprehensionslice

解决方案


def repeat(chars, num=1):
    return [chars[:index] + char * num + chars[index:] for index,char in enumerate(chars) if char != ' ']


repeat('monkeys', 1)
# ['mmonkeys', 'moonkeys', 'monnkeys', 'monkkeys', 'monkeeys', 'monkeyys', 'monkeyss']
repeat('monkeys', 2)
# ['mmmonkeys', 'mooonkeys', 'monnnkeys', 'monkkkeys', 'monkeeeys', 'monkeyyys', 'monkeysss']
repeat('hi how are you', 1)
# ['hhi how are you', 'hii how are you', 'hi hhow are you', 'hi hoow are you', 'hi howw are you', 'hi how aare you', 'hi how arre you', 'hi how aree you', 'hi how are yyou', 'hi how are yoou', 'hi how are youu']

推荐阅读