为了账号安全,请及时绑定邮箱和手机立即绑定

__len__的代码问题

class Fib(object):

    def __init__(self, num):

        a, b, L = 0, 1, []

        for n in range(num):

            L.append(a)

            a, b = b, a + b

        self.numbers = L

    def __str__(self):

        return str(self.numbers)

    __repr__ = __str__

    def __len__(self):

        return len(self.numbers)

此代码中,第三行的 L = 0, 1, [],以及第六行的a, b = b, a + b分别是什么作用

正在回答

1 回答

斐波那契数列的两个初始值0,1赋给a,b,用list集合L存储斐波那契数列

第六行的实际就是a=b;b=a+b;

0 回复 有任何疑惑可以回复我~
#1

dong_brother 提问者

非常感谢!
2018-07-25 回复 有任何疑惑可以回复我~
#2

我的女朋友有洁癖

a, b = b, a + b 跟 a=b;b=a+b 是不一样的。。。 a, b = b, a + b 先计算右边 假设a=0 b=1那么a, b = b, a + b 就是 a = 1 , b = a+b = 1
2018-08-09 回复 有任何疑惑可以回复我~
#3

疯狂的王

大哥你别误导别人 a,b=b,a+b 和 a=b b=a+b 不一样 你自己去验证一下 如果是后者 相当于b=b+b
2018-08-22 回复 有任何疑惑可以回复我~
#4

925755208 回复 我的女朋友有洁癖

你这个先计算左边是什么意思啊?表示a=b,b=a+b是同时执行的意思吗
2018-10-15 回复 有任何疑惑可以回复我~
#5

慕粉3896723

回复 疯狂的王人家说的没错啊
2018-11-17 回复 有任何疑惑可以回复我~
#6

jialianli 回复 疯狂的王

确实两种写法的的结果不一样。可以帮忙解释为什么后面的相当于b=b+b吗?感谢
2018-11-29 回复 有任何疑惑可以回复我~
#7

源缘小白兔 回复 我的女朋友有洁癖

先计算右边也不对,b=a+b; a=b不就相当于a也=a+b了吗
2019-01-06 回复 有任何疑惑可以回复我~
#8

源缘小白兔 回复 我的女朋友有洁癖

或者理解为先计算等值,在赋值
2019-01-06 回复 有任何疑惑可以回复我~
#9

慕UI8290743 回复 疯狂的王

对的 , 如果是后面的写法 应该写成 b = a + b (b为两者之和) a = b - a (a为原来的b)
2019-02-16 回复 有任何疑惑可以回复我~
#10

weixin_慕莱坞6419966 回复 我的女朋友有洁癖

这边是同时进行,类似于在一条语句里面
2019-02-22 回复 有任何疑惑可以回复我~
查看7条回复

举报

0/150
提交
取消
python进阶
  • 参与学习       255665    人
  • 解答问题       2949    个

学习函数式、模块和面向对象编程,掌握Python高级程序设计

进入课程

__len__的代码问题

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信