【发布时间】:2015-10-30 08:57:16
【问题描述】:
我正在编写一个程序,该程序会进行许多数学计算,最终生成要绘制的点列表。我在多次迭代中这样做,每次迭代得到一个点,然后将新点用于代码中的下一次迭代。列表conditions_old 保存上次迭代的值。列表conditions_new 是迭代完成后找到的新点。在代码的末尾,列表设置为彼此相等:conditions_old = conditions_new。这是唯一一次为conditions_old 分配一个值,但用于开始计算的初始条件除外。综上所述,这是我遇到的问题:
conditions_old = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
kCompute = conditions_old[:]
for i in range(3):
for j in range(3):
print("conditions_old BEFORE: ", conditions_old[i][j])
kCompute[i][j] = (conditions_old[i][j] + (1/4)) # This is where things get fishy.
print("conditions_old AFTER: ", conditions_old[i][j])
print("kCompute: ", kCompute[i][j])
这是我代码的一小部分。发生的情况是列表conditions_old 将在计算完成后获取kCompute 的值。我的问题是这个;为什么conditions_old 获得kCompute 的新值?还有,这个问题怎么解决?
我以前见过 python 做一些奇怪的事情,但这是我没想到会遇到的。
我目前在 Yosemite 上使用 python 3.4
【问题讨论】: