有人可以解释这段代码的工作原理吗?为什么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