Python 2.7:简单';对于';循环实现
我是编程新手,在理解我遇到的Python“for”循环实现示例背后的逻辑时遇到了一些困难:Python 2.7:简单';对于';循环实现,python,python-2.7,loops,for-loop,Python,Python 2.7,Loops,For Loop,我是编程新手,在理解我遇到的Python“for”循环实现示例背后的逻辑时遇到了一些困难: s="abcdefg" t="" for a in s: t=a+t 我不明白为什么这段代码返回“gfedcba”。为什么它应该与以下代码不同: s="abcdefg" t="" for a in s: t=t+a 。。。返回“abcdefg”。两个代码段中的for循环是相同的。区别在于您对t所做的操作。在每次迭代中,第一个片段在字符串t前面加上字符a,有效地反转原始字符串s。在每次迭代中
s="abcdefg"
t=""
for a in s:
t=a+t
我不明白为什么这段代码返回“gfedcba”。为什么它应该与以下代码不同:
s="abcdefg"
t=""
for a in s:
t=t+a
。。。返回“abcdefg”。两个代码段中的
for
循环是相同的。区别在于您对t
所做的操作。在每次迭代中,第一个片段在字符串t
前面加上字符a
,有效地反转原始字符串s
。在每次迭代中,第二个代码段在字符串t
的末尾添加a
字符,有效地重新创建原始字符串s实际上,您会问为什么a+t
和t+a
不相等
这里,+
表示而不是,字符串串联不是:
思考代码的一种方式是
t = a + t
在t
前面插入a
,而
t = t + a
将其插入背面。遵循如下逻辑:
s="abcdefg"
t=""
这些是开始变量,现在让我们“展开”for循环。请记住,“a”代表“s”的每个字符,从头到尾:
t = a + t
所以t=“a”
所以t=“ba”
所以t=“cba”
串联与加法不同。秩序很重要 一个将字符放在末尾,另一个将字符放在前面,如果在循环中打印,它应该非常清晰好的问题,我不知道可以像这样反转字符串:p。顺便说一句,这在Python3上也适用。
t = a + t
t = a + t
t = a + t