给定一个字符串,如何用每个重复的字母生成一个新字符串?

2024-10-01 13:41:07 发布

您现在位置:Python中文网/ 问答频道 /正文

给定这样的字符串:

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

然而,我想知道是否有一个更为Python的方式来做这件事?你知道吗


Tags: 字符串youhi字符arehowmonkeyshii
3条回答

只需使用理解列表:

a = 'monkeys'

result = [a[:i] + a[i] + a[i:] for i in range(len(a)) if a[i].isalpha()]

['mmonkeys', 'moonkeys', 'monnkeys', 'monkkeys', 'monkeeys', 'monkeyys', 'monkeyss']
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']

您可以定义一个生成器,该生成器生成具有重复字符的字符串:

a = 'monkeys'
b = 'hi how are you'

def repeater(x):
    for i in (idx for idx, char in enumerate(x) if char.isalpha()):
        yield x[:i] + x[i] + x[i:]

print(*repeater(a), sep=' | ')

# mmonkeys | moonkeys | monnkeys | monkkeys | monkeeys | monkeyys | monkeyss

print(*repeater(b), sep=' | ')

# 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 you

使用Python3.6+,您可以利用格式化的字符串文本(PEP498):

def repeater(x):
    for i in (idx for idx, char in enumerate(x) if char.isalpha()):
        yield f'{x[:i]}{x[i]}{x[i:]}'

相关问题 更多 >