2012-03-29 7 views
0

入力文字列を2文字で返す関数を記述しようとしています。たとえば、入力が 'hello'だった場合、関数は 'hheelllloo'を返します。私は試しているが、私はその機能を書く方法を見つけることができないようだ。どんな助けでも大歓迎です - ありがとう。どのように文字列を受け取り、すべての文字を繰り返した元の文字列である新しい文字列を返す関数をPythonで記述しますか?

>>> s = 'hello' 
>>> ''.join(c * 2 for c in s) 
'hheelllloo' 
+3

はあなたがこれまでにしようとしているものを共有することはできますか?私たちはそれを修正することができます。 – Shoban

答えて

3
s = 'hello' 
''.join(c+c for c in s) 

# returns 'hheelllloo' 
5

文字列は不変なので、連結するのは良い考えではありませんrepeatCharsメソッドで見られるように、それらを一緒に配置します。あなたが操作しているテキストが 'hello'のような短い長さを持っていても、 'superfragilisticexpialidocious'(またはそれ以上の文字列)を渡していれば、大丈夫です。代わりに、前のコードを@Roman Bodnarchukのコードとマージしました。

代替方法:

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

なぜ?これを読む:Efficient String Concatenation in Python

+1

私はリストの理解ではなく、ジェネレータの表現であると思います。 – moooeeeep

+0

@moooeeeep agree。 –

4
def repeatChars(text, numOfRepeat): 
    ans = '' 
    for c in text: 
     ans += c * numOfRepeat 
    return ans 

使用するには:
repeatChars( 'こんにちは'、2)
出力: 'hheelllloo'

単純発生器

1
>>> s = "hello" 
>>> "".join(map(str.__add__, s, s)) 
'hheelllloo' 
1
def doublechar(s): 
    if s: 
     return s[0] + s[0] + doublechar(s[1:]) 
    else: 
     return "" 
+0

recursinとPythonの現実世界の問題で再帰が無駄になる理由をうまく使います。それがどのように機能するかを考えることを学ぶために、それは合っています。 – jsbueno