Python 2.7:简单的“for”循环实现

4

我是一名编程新手,我遇到了一个Python 'for'循环的实现例子,但不太理解其背后的逻辑:

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

我对为什么这段代码返回“gfedcba.”感到困惑。 它跟以下的代码有什么不同呢:

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

...该函数返回“abcdefg”。


一个在末尾放置字符,另一个在前面放置字符,如果你在循环中打印,那么应该很清楚了。 - Padraic Cunningham
1
好问题,我不知道可以这样反转字符串。顺便说一下,这在Python 3上也适用。 - Remi Guan
3个回答

5
实际上,您正在问为什么a + tt + a不等同。
这里的+表示字符串连接而不是加法,字符串连接不是交换律
>>> "a" + "b"
'ab'
>>> "b" + "a"
'ba'

思考你的代码的一种方式是

t = a + t

t 的前面插入 a,而

t = t + a

将其插入到后面。


5

按照以下逻辑进行操作:

s="abcdefg"
t=""

这些是起始变量,现在让我们"展开"for循环。请记住,"a"代表每个字符"s",从第一个到最后一个:

t = a + t

所以 t = "a"

t = a + t

因此 t = "ba"

t = a + t

所以 t = "cba"

字符串拼接不像加法。顺序很重要!


1
两段代码中的for循环相同。区别在于你对t的处理方式。第一段代码在每次迭代中在字符串t前面添加字符a,从而反转原始字符串s。第二段代码在每次迭代中在字符串t末尾添加字符a,从而重新创建原始字符串s

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接