2016-04-16 90 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 

它采取了新的字母,并在其右侧添加前面的字母的字符串。 (如果你输出的是输出+字母,你只需要在前面的字母右边添加新的字母,这会导致与你开始的字符串完全一致。)

相关问题