我具有以下功能:
s = 'hello'
rev = ''
for char in s:
rev = char + rev
return rev
为什么上面的for循环反向添加字符?我尝试使用rev += char
,它以原始顺序s
返回了字符串。在视频中提到了这一点,他们没有正确解释,只是说“ Python的for字符串遍历方式不能那样工作”。我想知道为什么会这样做,所以将来我会更倾向于避免这些错误。
另一个问题是,我可以在for循环上方的列表中实现这种类型的行吗,它会输出列表的反向列表吗?由于列表是可变的。
答案 0 :(得分:3)
字符串上的+
运算符表示串联,这是不可交换的。因此,char + rev
和rev + char
之间是有区别的。
成功地在前面的下一个字符之前有效地反转字符串。
答案 1 :(得分:1)
在您拥有的循环中,您的for循环定义为:
s = 'happy'
rev = ''
for char in s:
rev = ch + rev
如果我们看一下前几次迭代,将得到: H 啊 帕 ah yppah
这是因为在更新变量rev时,您正在通过定义在rev前面添加下一个字符(char)。
rev =新字符+当前版本 因此,在最后一次迭代中,我们将y加上,就等于:
rev =新字符(Y)+当前REV(PPAH), 基本上说您是在字母y上加上PPAH,而不是在PPAH上加上y。
通过交换ch和rev可以很容易地修复循环,使其:
for char in s:
rev = rev + char