2016-04-16 91 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意味着串聯。那麼串聯意味着什麼?這意味着把第二個放在第一個後面處。

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

無論如何,如果你想扭轉str使用下,它的效率多種原因。

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

嗯,@ TigerhawkT3指出,你可以使用很多,要快得多,

output = text[::-1] 
+2

'text [:: - 1]'可能更好。 – TigerhawkT3

+0

@ TigerhawkT3是的,它比我的解決方案快得多。那麼如果你想要更多的控制,你可以把更多的功能作爲一個管道,只要它們都處理迭代器,它仍然是有效的。 –

+2

我並沒有真正考慮速度 - 'text [:: - 1]'更短,更具可讀性,並且非常規範。 – TigerhawkT3

0

當您使用+連接兩個字符串,順序事項:'A' + 'B'會給你'AB''B' + 'A'會給你'BA'。因此,在你的功能中,每次你做:

output = letter + output 

它採取了新的字母,並在其右側添加前面的字母的字符串。 (如果你輸出的是輸出+字母,你只需要在前面的字母右邊添加新的字母,這會導致與你開始的字符串完全一致。)

相關問題