Python中有一个非常简洁的赋值语句用法,就是连续赋值。
要分别给两个变量赋值,我的第一念头是如下:
1 a = 1
2 b = 2
但其实python还提供了一种更简洁的写法如下
1 a , b = 1 , 2
这时我们很自然的就能理解为按顺序赋值,a = 首位数字1,b = 次位数字2。但实际上并不仅仅如此。
连续赋值语句中等式右边其实都是局部变量,而不是真正的变量值本身。当等号右边是定值时,这样做当然没有问题。但是如果右边是一个含有变量的表达式,那么赋值时会采用截至本句代码前一句为止,各变量所代表的值进行计算。如
1 a = 0
2 b = 1
3 a , b = b , a + b
上述代码运行的结果,a = b = 1, b = a + b = 0 + 1 = 1,输出结果a = 1,b = 1,并没有把最热乎的a = 1用到b的计算中。这是个大坑!
最后顺手贴一个用生成斐波拉切数列,贴他是因为用python写出来的居然才5行!这也太简单了!
1 # 生成“斐波拉切数列”。
2 # 斐波那契数列指的是这样一个数列 1, 1, 2, 3, 5, 8, 13, 21, 34, 55,
3 # 89, 144, 233,377,610,987,1597,2584,4181,6765,10946,17711,28657,46368........
4 # 这个数列从第3项开始,每一项都等于前两项之和。
5 i = 0
6 j = 1
7 for _ in range(20): # 输出前20位
8 i , j = j , i + j
9 print(i,end = " ")
标签:到斐,20,数列,Python,波拉,python,赋值
来源: https://www.cnblogs.com/HuangYuanAvril/p/11209334.html