Как вы пишете функцию в Python, которая принимает строку и возвращает новую строку, которая является исходной строкой, с повторением всех символов? - PullRequest
0 голосов
/ 29 марта 2012

Я пытаюсь написать функцию, которая возвращает строку, которая является введенной строкой с двойными символами. Например, если вход был 'привет', то функция должна вернуть 'hheelllloo'. Я пытался, но я не могу найти способ написать функцию. Любая помощь будет принята с благодарностью - Спасибо.

Ответы [ 5 ]

5 голосов
/ 29 марта 2012

С простым генератором:

>>> s = 'hello'
>>> ''.join(c * 2 for c in s)
'hheelllloo'
4 голосов
/ 29 марта 2012
def repeatChars(text, numOfRepeat):
    ans = ''
    for c in text:
        ans += c * numOfRepeat
    return ans

Для использования:
repeatChars ('привет', 2)
вывод: 'hheelllloo'

Поскольку строки являются неизменяемыми, не рекомендуется объединять их вместе, как показано в методе repeatChars. Это нормально, если текст, которым вы манипулируете, имеет короткую длину, например «привет», но если вы передаете «superfragilisticexpialidocious» (или более длинные строки) ... Вы поймете точку. В качестве альтернативы я объединил свой предыдущий код с кодом @Roman Bodnarchuk.

Альтернативный метод:

def repeatChars(text, numOfRepeat):
    return ''.join([c * numOfRepeat for c in text])

Почему? Прочитайте это: Эффективная конкатенация строк в Python

3 голосов
/ 29 марта 2012
s = 'hello'
''.join(c+c for c in s)

# returns 'hheelllloo'
1 голос
/ 29 марта 2012
def doublechar(s):
    if s:
        return s[0] + s[0] + doublechar(s[1:])
    else:
        return ""
1 голос
/ 29 марта 2012
>>> s = "hello"
>>> "".join(map(str.__add__, s, s))
'hheelllloo'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...