1 回答
TA贡献1851条经验 获得超4个赞
随机方差使得很难看出 发生了什么val。所以让我们简化一下函数:
In [16]: def create_dataset(hm, step=2, correlation='pos'):
...: val = 1
...: ys = [] # empty list
...: for i in range(hm):
...: y = val
...: ys.append(y)
...: if correlation and correlation == 'pos':
...: val += step
...: elif correlation and correlation == 'neg':
...: val -= step
...: return ys
In [17]: create_dataset(5, 2, "pos")
Out[17]: [1, 3, 5, 7, 9]
In [18]: create_dataset(5, 2, "neg")
Out[18]: [1, -1, -3, -5, -7]
这正是我所期望的。 每次迭代val递增step(或递减)一次。并将新值存储ys在下一个循环中。
In [19]: val = 0
In [20]: val += 12
In [21]: val
Out[21]: 12
In [22]: val *= 2
In [23]: val
Out[23]: 24
对于像这样的数字val -= 12是相同的:
In [24]: val = val - 12
In [25]: val
Out[25]: 12
一个新号码被分配给val。
'+' 和 '+=' 转换为方法调用:
val + 12 => val.__add__(12)
val +=12 => val.__iadd__(12)
这些方法是为每种对象类型定义的,因此细节可能因类型而异。
对于列表和 numpy 数组等可变对象,'+' 和 '+=' 之间的差异更显着,有时会导致迭代出现问题。
我相信 C 和/或 C++ 有i++ 操作。这有点像a += 1。
添加回答
举报