2016-04-16 38 views
-1

誰かがこのコードのしくみを説明できますか?x = x + yとx = y + xが時々異なるのはなぜですか?

def reverse(text): 
    output = "" 
    for letter in text: 
     output = letter + output 
    return output 
print reverse("abcdef") 

なぜ "output = output + letter"を使用しても動作しないのですか?

+0

あなたのコードは機能しています何がおかしいの? – Will

+0

私はあなたのコードの実行を実行する必要があると思います。数分以上かかることはありません。 – t0il3ts0ap

答えて

4

strの演算子は、の連結を意味します。コネクションの意味は何ですか?それは、最初のもののに2番目のものを置きます。

"a" + "b" # "ab" 
"b" + "a" # "ba" 

あなたはstrは、以下を使用逆転したい場合はとにかく、それは多くの理由から効率的です。意志'A' + 'B'はあなたに'AB'ながら'B' + 'A'を与える:TigerhawkT3が指摘@として使用すると、2つの文字列、順序が重要に参加するために使用+する場合

output = "".join(reversed(text)) 

さて、あなたは、

output = text[::-1] 
+2

'text [:: - 1]'おそらく良いです。 – TigerhawkT3

+0

@ TigerhawkT3はい、私のソリューションよりもはるかに高速です。もしあなたがより多くの制御を必要とするならば、パイプラインとしてより多くの機能を置くことができ、すべてがイテレータを扱っている限り、効率的です。 –

+2

私はスピードについて実際には考えていませんでした。 'text [:: - 1]'は、より短く、より読みやすく、かなり標準的です。 – TigerhawkT3

0

をはるかに、はるかに高速に使用することができます'BA'を教えてください。だからあなたの機能で、あなたが毎回:

output = letter + output 

は、それは新しい文字を取って、それを右へ、前の文字の文字列を追加しています。 (output = letterを出力した場合は、前の文字の右に新しい文字を追加するだけで、これと同じ文字列が返されます)

関連する問題