在for循环中反转字符串

时间:2019-11-02 01:01:23

标签: python python-3.x

我具有以下功能:

s = 'hello'
rev = ''

for char in s:
    rev = char + rev
return rev

为什么上面的for循环反向添加字符?我尝试使用rev += char,它以原始顺序s返回了字符串。在视频中提到了这一点,他们没有正确解释,只是说“ Python的for字符串遍历方式不能那样工作”。我想知道为什么会这样做,所以将来我会更倾向于避免这些错误。

另一个问题是,我可以在for循环上方的列表中实现这种类型的行吗,它会输出列表的反向列表吗?由于列表是可变的。

2 个答案:

答案 0 :(得分:3)

字符串上的+运算符表示串联,这是不可交换的。因此,char + revrev + 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