python - 在python中几次迭代后错误地附加了列表
问题描述
这是我的python代码:
import numpy as np
import copy
x_input = np.array([[ 0.0000000, 0.0000000, 0.0000000],
[ 0.7570000, 0.5860000, 0.0000000]])
x_input_ = np.array([[ 0.0000000, 0.0000000, 0.0000000],
[ 0.7570000, 0.5860000, 0.0000000]])
# x_input_ = copy.deepcopy(x_input)
delta = 0.1
xlist = []
for i in range(len(x_input)):
for j in range(np.shape(x_input)[1]):
print(i,j)
print (x_input)
x_input[i,j] = x_input[i,j] + delta
print(x_input)
xlist.append(x_input)
print('xlist:')
print(xlist)
x_input = x_input_
print(xlist)
问题:为什么在 i=0, j=2 迭代附加xlist
错误?但是在 i=0,j=0 和 i=0,j=1 时,这xlist
是正确的。
解决方案
您的列表包含对最初称为 的数组的一个引用,以及对该数组的x_input
另外五个引用x_input_
(带有尾随下划线)。
如果您每次都想要单独的引用,您可能想要复制数组,而不是重复引用它。我不确定你期望什么输出。
如果您想要累积结果,以便列表中的每个连续数组都是前一个数组,请将该append
行更改为:
xlist.append(copy.deepcopy(x_input))
并摆脱循环中的最后一行,即 rebind x_input
。
如果您希望每个数组与原始值相比只有一个更改(每个数组不同),请保持附加不变,并将循环的最后一行更改为:
x_input = copy.deepcopy(x_input_)
推荐阅读
- javascript - JavaScript 显示/隐藏 div
- r - Drop levels of the same name from the whole dataframe
- facebook-graph-api - 使用 GraphAPI 发布到 Facebook 页面
- angularjs - @angular/cli@1.7.4 - 未捕获的类型错误:无法读取未定义的属性“模块”
- algorithm - 包含引用插入的 YAML 缩小算法
- python-3.x - 如何找到特定变量的最高 R 平方值(在 python 中)?
- forms - Drupal 8 联系表格不要在电子邮件中发送消息
- knex.js - 节点.js | knex:找不到命令
- firebase - Firebase function (node.js) to return download url of image (via filename) from storage
- python - scipy优化leastsq 2D参数进行优化