我是编程新手,我在理解Python背后的逻辑方面遇到了一些困难。循环实现示例我遇到了:
s="abcdefg"
t=""
for a in s:
t=a+t
我很困惑为什么这段代码返回" gfedcba。"为什么它应该有所不同:
s="abcdefg"
t=""
for a in s:
t=t+a
...返回" abcdefg。"
答案 0 :(得分:5)
实际上,您问的是为什么a + t
和t + a
不相等。
此处,+
表示string concatenation而不是addition,字符串连接不是commutative:
>>> "a" + "b"
'ab'
>>> "b" + "a"
'ba'
考虑代码的一种方法是
t = a + t
在a
的前面插入t
,而
t = t + a
将其插入后面。
答案 1 :(得分:5)
遵循以下逻辑:
s="abcdefg"
t=""
这些是起始变量,现在让我们展开"展开" for循环。请记住" a"代表" s"的每个字符,从头到尾:
t = a + t
所以t =" a"
t = a + t
所以t =" ba"
t = a + t
所以t =" cba"
连接不像添加。订单很重要!
答案 2 :(得分:1)
两个片段中的for
循环都是相同的。不同之处在于您对t
的处理方式。在每次迭代中,第一个代码段预先字符a
前面的字符t
,有效地反转原始字符串s
。第二个代码段在每次迭代中在字符串a
的末尾追加字符t
,有效地重新创建原始字符串s