有人可以解釋這段代碼的工作原理嗎?爲什麼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」不起作用?
有人可以解釋這段代碼的工作原理嗎?爲什麼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」不起作用?
+
運營商實施str
意味着串聯。那麼串聯意味着什麼?這意味着把第二個放在第一個後面處。
"a" + "b" # "ab"
"b" + "a" # "ba"
無論如何,如果你想扭轉str
使用下,它的效率爲多種原因。
output = "".join(reversed(text))
嗯,@ TigerhawkT3指出,你可以使用很多,要快得多,
output = text[::-1]
'text [:: - 1]'可能更好。 – TigerhawkT3
@ TigerhawkT3是的,它比我的解決方案快得多。那麼如果你想要更多的控制,你可以把更多的功能作爲一個管道,只要它們都處理迭代器,它仍然是有效的。 –
我並沒有真正考慮速度 - 'text [:: - 1]'更短,更具可讀性,並且非常規範。 – TigerhawkT3
當您使用+連接兩個字符串,順序事項:'A' + 'B'
會給你'AB'
而'B' + 'A'
會給你'BA'
。因此,在你的功能中,每次你做:
output = letter + output
它採取了新的字母,並在其右側添加前面的字母的字符串。 (如果你輸出的是輸出+字母,你只需要在前面的字母右邊添加新的字母,這會導致與你開始的字符串完全一致。)
你的代碼對我有效,你怎麼了? – Will
我認爲你需要對代碼進行一次幹運行。它不會超過幾分鐘。 – t0il3ts0ap