白白白白丶白 发表于 2020-6-23 13:17:41

这个代码要怎么理解,

class ReverseString(object):

    def reverse(self, chars):
      if chars:
            size = len(chars)
            for i in range(size // 2):
                chars, chars = chars, chars
      return chars

chars, chars = chars, chars

加粗的代码要怎么理解,想来想去也想不明白怎么赋值,最终实现列表反转

Twilight6 发表于 2020-6-23 13:24:04

本帖最后由 Twilight6 于 2020-6-23 13:26 编辑




简单理解嘛,就是把等号 = 右边的值 依次赋值给 等号 = 左边的值

而且等号左边是列表索引的元素,就达到互相替换位置的效果咯

chars, chars = chars, chars

就是同时把 chars第 i 个位置赋值上 chars 的第 size - 1 - i 位置参数的值

而 chars 赋值上之前chars 的 第 i 个位置参数的值嘛




wp231957 发表于 2020-6-23 13:24:32

这是一个互换
比如
首1尾1 互换
首2尾2 互换
首3尾3 互换
。。。
.......

白白白白丶白 发表于 2020-6-23 13:28:21

本帖最后由 白白白白丶白 于 2020-6-23 13:30 编辑

wp231957 发表于 2020-6-23 13:24
这是一个互换
比如
首1尾1 互换


chars怎么是尾呢{:5_94:}尾不是chars[-1]吗。我怎么看他都是chars [ i ] 后面的那个元素

wp231957 发表于 2020-6-23 13:31:42

白白白白丶白 发表于 2020-6-23 13:28
chars怎么是尾呢尾不是chars[-1]吗。我怎么看他都是chars [ i ] 后面的那个元素

你随便举个例子,带入一下就晓得了,难道不是吗
比如长度为10
带入得:
0---9
1----8
2---7
3----6
4----5
over

白白白白丶白 发表于 2020-6-23 13:32:27

Twilight6 发表于 2020-6-23 13:24
简单理解嘛,就是把等号 = 右边的值 依次赋值给 等号 = 左边的值

而且等号左边是列表索引的元素, ...

这个我是知道的,size - 1 - i 怎么是代表尾呢,为啥我算是chars[ i ]后面那个元素

白白白白丶白 发表于 2020-6-23 13:35:22

wp231957 发表于 2020-6-23 13:31
你随便举个例子,带入一下就晓得了,难道不是吗
比如长度为10
带入得:


{:9_221:}我他妈看错了,一直用size//2的值带进去想的,二比了

白白白白丶白 发表于 2020-6-23 13:36:39

白白白白丶白 发表于 2020-6-23 13:32
这个我是知道的,size - 1 - i 怎么是代表尾呢,为啥我算是chars[ i ]后面那个元素

想明白了,脑袋昏了,带错值了

wp231957 发表于 2020-6-23 13:36:39

白白白白丶白 发表于 2020-6-23 13:35
我他妈看错了,一直用size//2的值带进去想的,二比了

size//2明显是循环次数吗

白白白白丶白 发表于 2020-6-23 13:59:58

wp231957 发表于 2020-6-23 13:36
size//2明显是循环次数吗

是的,

永恒的蓝色梦想 发表于 2020-6-23 14:30:11

白白白白丶白 发表于 2020-6-23 13:35
我他妈看错了,一直用size//2的值带进去想的,二比了

{:10_277:}少说脏话

Twilight6 发表于 2020-6-23 15:00:18

白白白白丶白 发表于 2020-6-23 13:59
是的,

问题解决了就快点给解决你问题的人设置最佳吧~

白白白白丶白 发表于 2020-6-23 19:42:39

永恒的蓝色梦想 发表于 2020-6-23 14:30
少说脏话

了解{:9_227:}
页: [1]
查看完整版本: 这个代码要怎么理解,