Python 2.7:简单' for'循环实现

时间:2015-10-03 22:28:16

标签: python python-2.7 loops for-loop

我是编程新手,我在理解Python背后的逻辑方面遇到了一些困难。循环实现示例我遇到了:

s="abcdefg"
t=""
for a in s:
   t=a+t

我很困惑为什么这段代码返回" gfedcba。"为什么它应该有所不同:

s="abcdefg"
t=""
for a in s:
   t=t+a

...返回" abcdefg。"

3 个答案:

答案 0 :(得分:5)

实际上,您问的是为什么a + tt + 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